一、干货解释原因:
**原因一:**一台压力机的 Jmeter 默认最大支持 1000 左右的并发用户数(线程数),再大的话,容易造成卡顿、无响应等情况,这是受限于 Jmeter 其本身的机制和硬件配置(内存、CPU等)
**原因二:**由于 Jmeter 是 Java 应用,对 CPU 和内存的消耗较大,在需要模拟大量并发用户数时,单机很容易出现 JAVA 内存溢出的错误,导致测试脚本本身就有瓶颈
二、什么叫分布式压测:
普通压测:单台机可以对目标机器产生的压力比较小,受限因素包括CPU,网络,IO等
分布式压测:利用多台机器向目标机器产生压力,模拟几万用户并发访问
三、环境搭建:
前提条件:强烈建议windows(master控制机)与多个linux(slaves负载机)的jmeter、jdk版本保持一致
JMeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
windows安装:
1、windows(master控制机)安装jmeter与jdk,比较简单自行安装,配置好环境变量即可
linux安装:
温馨提示:多个linux(slaves负载机)的安装路径保持一致,安装方法均一致,JDK版本与windows一致,自行安装
1、上传并解压
tar -xvzf apache-jmeter-5.1.1.tgz
2、配置环境变量
vi /etc/profile
export PATH=$PATH:/root/test/apache-jmeter-5.1.1/bin
3、配置生效环境变量
source /etc/profile
4、配置Agent
vi jmeter.properties
server_port=1099
server.rmi.localport=1099
server.rmi.ssl.disable=true
server_port和server.rmi.localport设置成相同的端口号,controller *** 纵agent时需要使用此端口
5、运行agent
所在的bin目录下执行:
jmeter-server
(如果报: Server failed to start: java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address.
An error occurred: Cannot start. localhost.localdomain is a loopback address.
那么就指定当前linux机器的ip 执行
./jmeter-server -Djava.rmi.server.hostname=XXX.168.0.XXX)
windows上配置Controller
/apache-jmeter-5.1.1/bin/jmeter.properties
remote_hosts=192.100.8.128:1099,192.100.8.129:1099
remote_host指定agent服务的地址,多个地址使用逗号(,)分隔。
server.rmi.ssl.disable=true
去掉mmode=StrippedBatch(StrippedBatch:在响应数据中删除成功采样后,使用Batch模式)
resultcollector.action_if_file_exists=DELETE
四、测试验证:
1、已经显示出来了slaves的地址,可以进行单独运行,也可以远程启动所有
2、远程启动所有
五、监测服务器资源(CPU、内存等):
首先确保防火墙状态是关闭
systemctl status firewalld
1.插件准备
1)、下载安装包
JMeterPlugins-Extras.jar:https://jmeter-plugins.org/install/Install/
JMeterPlugins-Standard.jar:https://jmeter-plugins.org/install/Install/
ServerAgent-2.2.1:https://github.com/undera/perfmon-agent
2)、下载后分别解压
将JMeterPlugins-Extras.jar 和 JMeterPlugins-Standard.jar 放到jmeter安装路径 apache-jmeter-5.1.1\lib\ext目录下
将ServerAgent-2.2.1解压包放到要被监测的服务器上(linux服务器可以放在opt目录下,windows任意目录下)
2.环境准备:
1)Linux服务器启动监控服务
运行命令./startAgent.sh 或 sh startAgent.sh 即可启动ServerAgent服务
注:ServerAgent服务端口号默认为4444,如若遇到端口被占用,则需关闭占用该端口的进程,或者改变ServerAgent服务的默认端口:
A:关闭占用4444端口的进程
关闭占用4444端口的8260进程后,再次启动ServerAgent服务,成功。
B:使用命令改变ServerAgent服务的默认端口
java -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 7777 --tcp-port 7777
同样的,7777端口也要设置防火墙规则以及使用telnet本地测试下是否可以访问
3.资源监听
1)、选择监听器:
2)可以正常监测:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)