为什么要进行全链路压测?单接口压测是否能替代全链路?
- 为什么单接口性能测试不能替代全链路?
- 不能保证模拟了用户的正常行为;
- 无法准确找出性能瓶颈
- 全链路压测的注意点
- 线上环境:测试环境由于机器、环境配置、nginx等原因,不能实际模拟线上真实流量情况;线上流量的实时录制,相当于给原来的nginx加了一层,先保存一份日志给压测用,然后再透传给对应的日志服务器;
- 压测数据隔离: 数据统一使用线上流量,对于写操作,需要单独写到一个影子表,不影响真实的数据库表; redis也是一样,但是对于kafka这种消息队列,可以带上一些测试标识,只消费真实的线上流量;
- 压测服务隔离:深夜或者流量很小的时候进行,注意观察elk、监控、报警; 低峰期可以将线上真实流量引到一部分机器,而压测流量打到其他的机器,而降低压测对服务集群带来的影响;
- 机器管理: 机器扩容和异常机器摘除
- 机器是熔断和降级处理
- 压测结果:
- jvm调优
- IO读写
- 内存抖动,是否出现full gc