测试中遇到谁多的TPS波动的问题下面将经验分享一下
1. 有规律的波动,这样的问题,可能原因如下
(1)程序代码的原因:
如30分钟将重构一次索引,就有可能造成这个时间点的波动,当时测试一个项目,java-lucene, 全文检索,就出现这样的问题,当时的问题是由于内存不足造成的异常波动 ;
定时执行脚本任务,造成的有规律波动.
业务规则造成的波动 ,比如一秒只接受10个请求,其它请求拒绝.
(2)日志输出造成的波动 :
有时间有规律的小幅度波动,可能是日志写硬盘造成的,可以结合**的结果I/O 使用情况与分析波动的关系.
(3)redis持久化造成的波动 :
持久化时,会将内存的数据写入硬盘中,这时如果很有规律的波动,也有可能是redis 有规律的写入硬盘造成硬盘那个点无法提供服务造成的波动.
2. 无规律波动可能原因
(1)网络造成的波动:
网络不稳定造成的波动,也是不太好排的,不过loadrunner提供接口下载的时间,可以分析网络的原因
(2)本地打开thinktime 时间 造成的异常波动
loadrunner打开thinktime造成的异常波动
(3)本地写日志
在测试时,如果loadrunner打开本地写日志,本地硬盘如果性能不太好,可能会造成波动 . 这个问题已经遇到过了,害的我折腾了两天的时间才搞定这个问题.
(4)部分服务器down了
测试中发现线上一台服务器处于假死状态,这时候造成了请求异常. 不过一般这样的错误都是链接失败之类的,还是比较好分析出来的
(5)服务器假死
运行一个时间后,处于假死状态,这时候,可能所有的请求都会失败的...
线程死锁也有可能会造成 所有的请求等待的问题.
(6) 黑白名单的问题
IP请求次数过多,造成访问的异常;
一个用户1秒请求次数太多
上面的问题都有可能会造成波动.... 在测试中要一个个的排除来,很难的,最好先与开发多沟通... 有时间问题就定位了.