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请求
抓包下来的内容:
按内容写了一个http请求,运行报错。
问题:请求内部隐含了一个信息头管理器
打开管理器,发现头部信息有两项为必须参数
自己在请求处添加信息头,运行成功。