Jmeter检测服务器遇到的问题及解决方案

时间:2024-05-20 07:33:58

jmeter遇到的坑及解决办法

安装官网最新版本,jmeter5
1.监控服务器性能
安装JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar在本机。
在服务器安装ServerAgent.zip,安装步骤自行百度。
1)装完后在本机打开telnet客户端。
打开命令行,输入telnet **** 4444
无法连接。
于是在服务器换了nohup命令去安装,让它在后台运行
nohup ServerAgent-2.2.3/startAgent.sh --udp-port 4444 --tcp-port 4444 &

2)仍然无法连接。

换端口
nohup ServerAgent-2.2.3/startAgent.sh --udp-port 4445 --tcp-port 4445 &

默认4444端口使用telnet ip port 无法访问时,修改serverAgent端口号

java -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 7879 --tcp-port 7879

(如果本地ip可以访问,外网ip无法访问,可能是外网端口映射原因)

这次连接成功

启动jmeter,打开PerfMon Metrics Collector,这是监听服务器的插件。

3)运行已准备好的脚本,报
java.lang.NoSuchMethodError: org.apache.jmeter.samplers.SampleSaveConfiguration.setFormatter
试了半天都是这个错误。
问题:jmeter版本太高,setFormatter方法在3.1版本后不支持。但是插件没有高版本,只能卸载5.0重装3.1。重装后成功。
补充:jmeter据说高版本可以使用这个办法:下载plugins-manager.jar ,复制到Jmeter文件夹的lib/ext路径下,重启Jmeter后,在选项菜单中就可以看到plugins-manager插件管理器了。打开,查找PerfMon勾上勾选,再点击右下角的Apply Changes…按钮即可
但是这个办法我亲测查不到PerfMon,可能是插件版本问题。

2.运行脚本
fiddler抓包打开百度首页
导入线程组,设置20个线程,不必设置永远。
运行,性能图看到了。

1)设置断言,选响应文本-substring,文本为百度。
运行报错,打开查看结果树,点开响应数据,发现响应的中文都是乱码,所以没取到。
解决:打开jmeter.properties 找到sampleresult.default.encoding 一项,解除注释,设置为utf-8
再运行,这次文本改为星缘若影(百度登录用户名)

2)运行报错,检查,发现这个脚本没有登录cookie,等于游客访问,检查不到。改文本为百度,运行成功。

3.抓包与自定义http请求

抓包下来的内容:
Jmeter检测服务器遇到的问题及解决方案
按内容写了一个http请求,运行报错。
问题:请求内部隐含了一个信息头管理器
Jmeter检测服务器遇到的问题及解决方案
打开管理器,发现头部信息有两项为必须参数
Jmeter检测服务器遇到的问题及解决方案
自己在请求处添加信息头,运行成功。