(1) 保证测试机与被测机在同一网段。如果在不同网段,可能会存在网络瓶颈,导致压力测试达不到指定的并发量。
(2) 压力测试时,要同时观察测试机(压测工具siege或ab所在的机器)和被测机的负载情况(CPU,内存,网络带宽等)。如果有数据库或缓存,还要观察数据库服务器和缓存服务器的负载情况。
(3) 压力测试时,测试机的负载不能过高,以免影响测试工具发出的请求数量和并发度。被测机的负载要达到一定程度,CPU,内存,网络带宽至少要有一项接近满负荷状态。(例如,CPU使用率达到50%以上,甚至接近100%)。
(4) 对于mysql数据库,可以在命令行下使用show processlist命令查看同一时间的连接数,以及是否存在锁定现象。
(5) 对于siege,在设置-b选项,并且未设置-v选项的情况下,并发度设置为100左右即可(测试组给的经验值)。
(6) 为了减少不确定因素对结果的影响,每次压力测试都要达到一定的数量,并持续一定的时间,例如,持续压测20-30分钟。
(7) 压力测试不能只关注QPS,还要注意查看其它指标。
(8) 为了排除个别因素对性能的影响,可以适当地修改一些设置信息,通过对比修过前后的测试结果,分析评估单一因素对性能的影响。
(9) xdebug(xhprof)会影响性能,压力测试时要去掉PHP配置文件中的xdebug(xhprof)扩展,然后重启php。
(10) 虽然siege可以通过-f选项指定文件的方式同时请求多个不同的URL,但是,这种方式的缺点很明显:
· siege随机选择URL发起请求,各个URL的比例不好控制;
· 如果某个URL有问题,会影响整体的测试结果,并且难以识别。
所以,建议开启多个不同的siege进程,每个进程使用命令行选项设置请求持续时间和并发度等参数,最后,将各个siege进程的测试结果汇总。
来源:https://www.cnblogs.com/wahaha123/archive/2013/05/28/3103076.html