有时候需要大并发的情况,不仅取决于服务器配置,负载机配置也有要求,包括jmeter配置
场景一:
负载机并发过高,cpu100%,需要考虑分布式
场景二:
负载机并发过高,jmeter滋生内存溢出,jmeter报错:unable to create new native thread
关于场景二说到的问题,顺便说一下我在实践中踩坑过程:
1、单台负载机要并发2k,但是到900就提示:unable to create new native thread,不新增线程了,开始想办法解决,因为看到自己本地资源还没爆,最开始心想一台负载机不至于900并发就极限了吧?
2、确定是不是服务器限制了并发线程数(查看线程数并未影响)
3、再回过头看jmeter错误,发现漏掉了关键字眼:OutOfMemoryError(内存溢出),好,于是去处理jmeter内存配置:
首先:进入jmeter/bin目录下,打开jmeter.bat文件,修改-Xms1g -Xmxl1g启动内存和最大内存(我安装jmeter5.2,默认已经是1g了,我修改为2g,启动直接报错了,兼容不了)
4、没办法,确实是没法扩容了,只能走分布式并发,于是就开始设置分布式
jmeter分布式并发设置及注意事项:
1、确定负载机n+1台,其中1台是主控机,其他的是受控机器
2、主控机配置:
A、进入jmeter/bin 下修改jmeter.properties.bat文件
remote_hosts配置受控机器,如控制机(本机)也要作为负载机,则,同样配置,1099位端口号,随便写一个不被占用即可
修改:server.rmi.ssl.disable=true
B、jmeter4级以上需要手动生成秘钥
进入jmeter/bin 点击create-rmi-keystore.bat,随便输入内容,只要程序认可,知道最后询问是否生成,输入Y,回车即可生成秘钥,秘钥在bin目录下rmi_keystore.jks
c、若主控机也要作为负载机,则,同样需要启动bin目录下的jmeter-server.bat
2、受控机配置:
A、受控机器上进入jmeter安装目录bin下修改jmeter.properties.bat文件,如主控机一样配置即可,配置ip为受控机本机ip即可
B、将主控机上生成的rmi_keystore.jks复制到受控机的jmeter安装目录bin下
C、受控机启动jmeter-server.bat
3、主控机启动jmeter