到目前为止有两种压测方式:
- 不扩容压测
- 扩容后压测
不扩容压测一般不推荐,这种方式需要对业务指标打折作为目标来进行压测,最后在扩容的时候还是需要压测一次,因为局部压测不能完完全全代表整体压测,如果整体压测出现问题,那么所有的局部压测都是白费苦工。局部压测主要为了优化局部API,所谓木桶理论,需要补高短板,才能提高整体的效果。(谨慎一点的话,可以先局部再整体)
扩容压测,就是指容量扩容到大促支撑位,然后进行压测。
值得注意的是,压测一定是针对生产!
有些同学对开发环境、测试环境、预发环境、灰度环境、仿真环境进行压测,从而推断出生产环境的性能。这是万万不可取的,因为环境不同,服务器的性能不一样,生产环境和其他环境的 DB 性能也不一样,还有一些中间件性能也不一样。所以,压测一定要在生产环境压测,但是有一个缺点,就是会对线上的正常流量产生影响,这也是不可避免的,所以压测的时候,一般都会选择流量不大的时候进行,尽量减少对正常流量的影响,一旦产生影响,请立即停止压测。
还有就是压测需要流量爬坡,切记不可一步到位,按照一定比例逐渐施压,每一个坡度都观察几分钟,没问题继续施压,达到目标后观察几分钟没问题直接停止压测,不可恋战!
为什么不恋战?因为大促的流量趋势就是那几分钟,长久的施压对服务器的性能有一定影响,比如 CPU 飙高啊,频繁 GC 啊等,所以在在压测过程中还需要不断观察系统整体性能,还有就是也会影响到正常的用户访问。举个例子,奥运会举重,明明只需要保证举起来三秒即可,你训练的时候难道要举起来三分钟吗?