最近在搞性能测试,发现性能测试要考虑和关注的点主要就是压力机和被压服务之间的均衡关系1、性能测试首先要定一个性能目标,也就是目标是什么,才在不断的尝试如何进行优化;
2、其次是服务资源的配置,在配置对应资源后,如果压力上不去后是否是对外提供服务的如Nginx存在限制,排除参数本身限制,在压测过程中通过资源监测工具,看是否把资源利用起来了,也就是cpu或者内存是否打满,也就是朝着这个方向去走;
3、压力机本身的限制,有时候jmeter压测,压测过程抛异常可能也是压测机器资源不足,看压力是否给到对应服务,只有给到对应服务,观察被压服务资源使用情况,是否充分把资源利用起来了,如果对方资源未被利用起来,则怀疑是压力机的问题,可以通过调整堆内存等优化jmeter或者其他压力设备的方式(keep alive等模式是否开启等压力机影响性能)。同时压力机亦要考虑网络带宽,如果压力机的网络带宽有限制,也可能是压不上去的原因;
4、性能测试主要思路就是达到压力机与目标服务的均衡,达到一个平衡过程,一般到达服务瓶颈了,就是服务本身响应正常,但到达一个峰值后,服务资源并未飙升,且利用率不足85%的情况,而增加压力线程数也无法继续提升,此可能到达软件本身的瓶颈,如果使用的是物理资源虚拟出来的,如虚拟机而目标服务以k8s的pod的形式创建,除了要观测pod的资源利用,还要观测是否已经把物理机的资源打满,也就是实际分配的虚拟资源已经比物理资源要大,而达到物理资源的瓶颈,这个时候虽然pod里面监测的使用资源未达到瓶颈,但实际使用的物理资源已经到达瓶颈,也是无法再继续提升;
5、压力需要阶梯式的逐渐找服务的瓶颈,保证无错误率的情况下逐渐提升压力线程,看最终结果是否满足产品需要,再在资源或者其他参数方面做对应调整优化,有的性能是资源限制的,有的是参数方面的限制,有的性能是软件本身限制。