最近很多小伙伴都在说我从来没有做过性能优化的工作。我在公司只做一些CRUD工作,接触不到性能优化相关的工作。现在出去找工作面试,面试官总是问一些很刁钻的问题刁难我,很多问题我都不知道怎么办!所以我该怎么做?然后我会写一些高并发系统相关的面试,容易问的问题。今天就来聊聊高并发场景下性能优化的指标,以及在做优化时需要注意哪些问题。面试场景面试官:在平时的工作中有没有做过性能优化相关的工作?首先,我们来分析一下面试官的问题。其实根据我自己招聘面试的经验,如果面试官问这样的问题。本质上,我不只是希望面试官简单的回答:做过或者没做过。而是想通过这个简单的问题来测试面试官的思维能力和对问题的理解。面试官本质上是希望面试官通过这个问题,说说自己在性能优化相关工作中的经历,以及对性能优化工作的一些理论理解,比如:性能优化衡量指标,期间需要注意的问题等。如果面试官面试时不能完全理解面试官的意图,回答问题的时候像挤牙膏一样挤出一点点,那么,大多数情况下,面试官会认为这个人没有性能优化方面的经验。这时候面试官对面试官的印象就会大大降低,极有可能面试结果冷淡。衡量指标对于性能优化,有很多衡量指标,大致可以分为:性能指标、响应时间、并发量、秒开率、正确率。我们可以使用下图表示这些指标。接下来,我们分别描述这些指标。性能指标性能指标可以包括:吞吐量和响应速度。我们通常所说的QPS、TPS、HPS都可以归结为吞吐量。很多朋友可能对QPS、TPS和HPS等了解不多,先说说这几个字母的含义。QPS表示每秒的查询数。TPS代表每秒的事务数。HPS代表每秒HTTP请求数。这些都是与吞吐量相关的指标。通常我们在做优化工作的时候,首先要明确需要优化的项目。例如:我们做的优化工作是为了提高系统的吞吐量吗?还是为了提高系统的响应速度?举个具体的例子:比如我们的程序中有一些数据库或者缓存的批量操作,虽然在数据读取上来了,响应速度下降了,但是我们优化的目标还是吞吐量。只要我们优化之后系统的整体吞吐量有了明显的提升,那么也会提升程序的性能。因此,优化性能不仅仅是提高系统的响应速度。在这里,优化性能不仅仅是优化吞吐量和优化响应速度,而是在吞吐量和响应速度之间找到平衡点,利用有限的服务器资源更好地提升用户体验。响应时间对于响应时间,有两个非常重要的指标。即:平均响应时间和百分位数。(1)平均响应时间通常,平均响应时间反映了服务接口的平均处理能力。计算方法是将所有请求花费的时间加起来除以请求数。举个简单的例子:比如:我们向一个网站发送了5次请求,每次请求花费的时间为:1ms、2ms、1ms、3ms、2ms,那么平均响应时间为(1+2+1+3+2)/5=1.8ms,所以平均响应时间为1.8ms。平均响应时间这个指标有个问题:如果请求在短时间内变得很慢,但是很快就过去了,此时的平均响应时间不能很好的反映性能的波动。(2)PercentilePercentile的意思就是我们在优化的时候划定一个时间范围,把每个请求的耗时加到一个列表中,然后把这些时间按照升序排列。这样我们就把特定百分位的时间消耗拿出来,这个数字就是TP值。TP值的含义是:超过N%的请求在X时间内返回。例如TP90=50ms,表示超过90th的请求会在50ms内返回。百分位指标也很重要,它反映了应用界面的整体反应。我们一般将百分位数分为TP50、TP90、TP95、TP99、TP99.9等多个段,百分位数越高要求越高,对系统响应稳定性的要求就越高。Concurrency并发是指系统可以同时处理的请求数,反映了系统的负载能力。我们在优化高并发系统的时候,往往也会调优并发量。还有各种调整方法。目的是提高系统同时处理请求的能力。总体来说,并发的指标比较容易理解,就不过多描述了。二次打开率二次打开率主要针对前端网页或者手机APP。如果一个前端网页或APP能在1秒内流畅打开,尤其是首页的加载。这时候用户会觉得前端网页或者APP用起来很流畅。如果超过3秒甚至更长时间,用户可以直接退出前端网页或者不再使用APP。因此,在高并发场景下优化程序,不仅要优化后端程序,还要优化前端和APP。正确性正确性是指无论我们如何优化应用程序,优化后的交互数据结果必须是正确的。优化前性能比较低,数据正确,优化后性能比较高,但数据不正确。优化需要注意的问题除非必要,一开始不要优化(尤其是在开发阶段)有些优化指南已经过时,需要考虑当前的软硬件环境(不要墨守成规)不要过分强调某些系统级的指标,比如缓存命中率,而是关注性能瓶颈而不是盲目跟风,测试找到系统的性能瓶颈,然后确定优化方式,注意权衡成本和优化的好处(部分优化可能需要对现有架构进行调整,增加开发/运维成本)优化的目标是用户体验,降低硬件成本(降低集群规模,不依赖单机高性能)优化方法测试环境对生产环境不一定有效(优化需要根据真实情况)好了,今天就到这里吧,我是冰河,下次见~~本文转载自微信公众号“冰河科技”,可以通过以下二维码关注。转载本文请联系冰川科技公众号。
