记录一次项目部署在阿里云的1万压测

场景:与往常测试不同,这次项目部署在阿里云服务器上面,需要在外网对其进行高并发压测(10000并发),这时需要考虑一个在内网压测不用考虑的因素,就是带宽。因为带宽的瓶颈不仅影响项目服务器的性能也影响jmeter负载机的压测力度。

压力机准备:

开了4台阿里云ESC服务器:

控制机:win2012r2(选择win,是因为控制机不参与压测,只是分发命令和接收数据,可视化会更好一点)

奴隶机(负载机)4台:linux

具体配置如下图:

 

 途中遇到的问题和解决办法:

问题:jmeter提示内存溢出,但是修改jmeter.bat中的 set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m,将xms和xmx改大以后,运行会报错。

原因1:机子本身内存太小,不足于承受修改后的xms。

解决:增加内存

原因2:jdk是32位的,32位的有上限

解决:jdk换成64位的

问题:控制机的带宽占满

原因:由于高并发,多台负载机与控制机做数据交互,负载机将响应结果返回给控制机这个过程占用的带宽是非常多的。

解决:租用的控制机和负载机确保是同个局域网,配置的时候使用内网ip进行配置,这样控制机和负载机的数据交互走的就是内网而不是外网。而阿里云的内网带宽上限是5G,这样是足够用的。

问题:单台并发不能太高,否则会影响测试结果(比如我们设置单台5000,我们以为有5000并发,其实只达到1000的效果),一万并发的话需要10台服务器充当负载机,服务器资源利用率低,成本太高。

原因:jmeter本身性能瓶颈导致。

解决:同一台服务器复制多个jmeter包,每个jmeter对应一个端口,这样可以同时启动多台,最大程度的利用负载机服务器资源。(目前经测试,8核32G配置分三台,每台800并发效果会好点)

 

posted @ 2022-12-01 10:17  Frank13054  阅读(310)  评论(0编辑  收藏  举报