压力测试遇上了一个奇怪的问题,请有经验的兄弟们帮忙看下
本帖最后由 测试积点老人 于 2018-9-26 10:49 编辑本人现在要对一个API网关的性能做测试,在搭建环境的时候,遇上了一个让我百思不得其解的问题,想请各位帮忙看一下,能解决当然万分感激,当然能提供解决思路的也十分感谢。前提发压机: 云服务器 8核8G
被测机: 云服务器 2核4G测试工具:基于python的locust。以下的测试我用docker容器起的locust 和 非docker容器起的locust 都尝试过了,数据还是一样的。
locust 运行模式 都是master-slave测试接口1:
http://.../s/0ms/1k
测试接口2:
http://.../s/200ms/1k为了方便的调试,用java的spring boot 框架写的测试接口。
测试接口1和测试接口2之间的不同就是接口测试2,我加了200ms的延迟,测试接口没有任何业务逻辑运算。https://testerhome.com/uploads/photo/2018/2cab737c-784c-4fd3-9c17-aeb6b5b4f935.png!large
数据一场景一测试接口1:http://.../s/0ms/1k
slave数:1个
并发用户:1000个https://testerhome.com/uploads/photo/2018/6be66ec7-35b3-4e32-9683-c0bef508c46a.png!large这组数据我得到的信息是一个slave的时候,1000个用户并发下得到的TPS是600左右,并且是在linux服务器上一核满负荷的情况下。被测服务器的cpu使用率属于正常。场景二测试接口1:http://.../s/0ms/1k
slave数:8个
并发用户:1000个https://testerhome.com/uploads/photo/2018/dbea29f9-8ce5-4b27-a137-aaee36dab48d.png!large
https://testerhome.com/uploads/photo/2018/36d604bb-a97a-426a-a954-3c3cd1c70f84.png!large
当我把slave加到8个的时候,1000个用户并发下,TPS差不多要4400左右了,发压机现在是8核满负荷运行。被测服务器的cpu使用也从前面的低使用率上升到了快平均cpu使用率接近45%了。我想说的是1slave的极限tps数 * slave的数量 应该等于整体的 tps的数量。以前测的都是开发写的接口,所以这条规则我是用到现在的。场景三测试接口2:http://.../s/200ms/1k
slave数: 1个
并发用户: 1000个
https://testerhome.com/uploads/photo/2018/1b0c9272-e596-43f2-adb8-a550ed2c8c0f.png!large
https://testerhome.com/uploads/photo/2018/23bc291e-74cd-4b7e-aa8a-f0340c8fac62.png!large
测试接口2,因为有200ms的延迟,所以1个slave进行请求的时候,我得到的500左右tps。其他情况也正常。场景四测试接口2:http://.../s/200ms/1k
slave数: 8个
并发用户: 1000个
https://testerhome.com/uploads/photo/2018/2571eac1-6bcb-4bd8-a8ae-4102168bce0f.png!large
https://testerhome.com/uploads/photo/2018/2277c7cf-63fa-4084-8849-c2d103760fb4.png!large
当我把slave加到8个的时候,问题出现了,就好像突然遇上了什么限制,TPS在1000的时候就到了一个稳定值,如果按照我以往的经验,一个slave的TPS在500,那么8个slave的TPS应该在4000左右才是比较正确的。在看一下负压机的cpu,竟然不是满负荷的,十分悠闲的分在8个cpu上,再看被测服务器这里的cpu和 一个slave进行压力测试数据差不多。1.刚开始的时候我以为是因为我用容器启动locust的关系,然后在云主机上直接安装locust,发现结果没有改变。所以就排除了容器的问题。
2.本来我是没有做测试接口1的,因为我觉得测试接口2的数据和我想的不一样,会不会应该延迟的关系,所以我才加了测试接口1,但是加了以后,我发现测试接口1的数据和我预想的是一致的,那么在locust的使用上我没有出问题。
3.那么问题是出在哪里,还是我对压力测的概念没有理解透彻?
4.我现在在尝试用jmeter进行测试,这个非GUI的还真的要稍微花点时间,不知道在我能够在liunx上熟练使用jmeter的时候,是否有人能帮忙指点一下。 把延迟从200加到500,再测场景4,看下tps 是不是超时了 超时了 看下服务的处理日志,感觉压力是没上去的
页:
[1]