Jmeter 问题锦集

错误1

\color{red}{问题描述}
java.io.FileNotFoundException:rmi_keystore.jks

\color{blue}{问题分析}
文件校验问题

\color{green}{解决方案}
1、不进行文件校验,打开 [ jmeter 安装目录 ]\bin\jmeter-server.bat 文件

# 在 jmeter.properties 文件中,修改以下内容:
server.rmi.ssl.disable=true

2、运行 create-rmi-keystore.bat (Windows)/ create-rmi-keystore.sh (Linux) 文件并自行填写相关信息,运行后,bin 目录下会多出一个 rmi_keystore.jks 文件,然后将这个文件拷贝到想要运行的 slave 机上,就可以不使用方法1

错误2

\color{red}{问题描述}
Error in rconfigure() method java.rmi.ConnectException: Connection refused to host: 192.168.xxx.xxx; nested exception is:
java.net.ConnectException: Connection timed out: connect

\color{blue}{问题分析}
1、192.168.xxx.xxx 这个IP 可能是虚拟网卡的 IP,关闭所有的虚拟网卡,只保留本地网络
2、检查slave服务器的防火墙是否打开,需要关闭
3、通信双方的机器没有识别到有效的远程IP,考虑将远程方法调用服务器的主机IP进行固定设置,再作效果检查
4、开始测试,但是测试速度非常慢,测试结果也是非常大的值,检查slave服务器和被测试服务器之间是否可以 ping 通地址

\color{green}{解决方案}
第3点分析相应解决方法:
Master机修改 jmeter.bat (windows)/ jmeter.sh (Liunx)

set rmi_host=-Djava.rmi.server.hostname=本机IP
// 修改set ARGS=,在其后增加一项 %rmi_host%,与其他项以空格间隔
if not defined JMETER_COMPLETE_ARGS (
    set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %rmi_host%
) else (
    set ARGS=
)

错误3

\color{red}{问题描述}
Error in rconfigure() method java.rmi.ConnectException:Connection refused to host

\color{blue}{问题分析}
1、查看端口是否被占用

\color{green}{解决方案}
1、更换端口

# windows doc 命令
netstat -ano | findstr "1099"
tasklist | findstr "1099"

错误4

\color{red}{问题描述}
java.net.ConnectException:Connection timed out:connect

\color{blue}{问题分析}
由于连接被拒绝,这意味着防火墙可能已切断连接

\color{green}{解决方案}
需要在JMeter和目标服务器之间打开端口

错误5

\color{red}{问题描述}
Response too large to be displayed. Size: 412152 > 204800

\color{blue}{问题分析}
未设置察看结果树的大小

\color{green}{解决方案}
1、打开 [ jmeter 安装目录 ]\bin\user.property 文件

# 在 user.property 中,添加以下内容并重启jmeter:
view.results.tree.max_size=0 

2、右击测试用例——添加——监听器——保存响应到文件, 填写要保存的文件名
3、将文件中的返回结果粘贴到此用例的响应断言中

错误6

\color{red}{问题描述}
Not able to find Java executable or version. Please check your Java installation. errorlevel=2

\color{blue}{问题分析}
1、errorlevel=1,当前系统安装的 jdk 版本过低
2、errorlevel=2,没有配置 jdk 环境变量所致
3、errorlevel=3,当前系统安装的 jdk 版本过低,不符合 jmeter 要求所致

\color{green}{解决方案}
通用方法:
配置对应这个 jmeter 版本的 jdk 版本的环境变量

第1点分析,其他解决方法:
打开 jmeter.bat 文 件,注释 set DUMP=-XX:+HeapDumpOnOutOfMemoryError

错误7

\color{red}{问题描述}
Bad call to remote host

\color{blue}{问题分析}
1、检查 salve 机器上的 jmeter-server 是否启动
2、检查 JMeter.properties 中 remote_hosts 的配置是否错误

\color{green}{解决方案}
1、启动 salve 机器上的 jmeter-server
2、正确配置 JMeter.properties 中 remote_hosts

错误8

\color{red}{问题描述}
1、Non HTTP response message: The target server failed to respond
2、Non HTTP response code: java.net.SocketException

\color{blue}{问题分析}
调整超时时间,jmeter 的 http 请求中,工具会默认勾选 Use KeepAlive ,在运行时,jmeter.properties 中的 httpclient.timeout 设置默认是注销的,也就是连接空闲,立马断开

\color{green}{解决方案}
打开 [ jmeter 安装目录 ]\bin\jmeter.properties 文件
根据情况设置10-60毫秒,能解决报错问题,问题还是没有真正解决

# 相应时间是正常测试的 2-3倍,响应时间变长
httpclient.timeout=60

错误9

\color{red}{问题描述}
Server failed to start: java.rmi.RemoteException: Cannot start. *** is a loopback address.
An error occurred: Cannot start. *** is a loopback address.

\color{blue}{问题分析}
没有指定主机导致这个错误

\color{green}{解决方案}
1、修改 hosts 文件

# 将127.0.0.1 换成Linux机器的ip地址
127.0.0.1 besttest
# 或者将 127.0.0.1 besttest 这一行给注释(#),在下面另起一行:
# 非 root 用户获取 IP 地址的命令,ifconfig 只有 root 用户可以直接用
ip besttest /sbin/ifconfig

2、打开 [ jmeter 安装目录 ]\bin\jmeter.properties 文件

# server_ip 为每台server自己的ip
RMI_HOST_DEF=-Djava.rmi.server.hostname=server_ip

错误10

\color{red}{问题描述}
Waiting for possible shutdown message on port 4445

\color{blue}{问题分析}
在 master 跑测试脚本时,会一直提示如下信息,导致测试一直跑不起来
这个是用于监听shutdown message的,如果不需要,可以直接设置为0即可

\color{green}{解决方案}
打开 [ jmeter 安装目录 ]\bin\jmeter.properties 文件

# 每台机器要在同一局域网下,最好操作系统保持一致,不然运行master 执行脚本有可能会提示拒绝连接的错误
# 在 jmeter.properties 文件中,添加以下内容:
jmeterengine.nongui.port=0

错误11

\color{red}{问题描述}
Could not reserve enough space for 2097152KB object heap
errorlevel=1

\color{blue}{问题分析}
Jmeter 内存不足

\color{green}{解决方案}
打开 [ jmeter 安装目录 ]\bin\jmeter.bat 文件

# 在 jmeter.bat 文件中,修改以下内容:
set HEAP=-Xms1g -Xmx1g

错误12

\color{red}{问题描述}
could not find ApacheJmeter_core.jar

\color{blue}{问题分析}
找不到 jdk 环境

\color{green}{解决方案}
1、正确安装对应版本的 jdk
2、正确设置环境变量

错误13

\color{red}{问题描述}
jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:

\color{blue}{问题分析}
配置了 127.0.0.1,但是未开启本机的 jmeter-sever.bat/jmeter-sever

\color{green}{解决方案}
开启本机的 jmeter-sever.bat/jmeter-sever

错误14

\color{red}{问题描述}
运行成功,响应断言也正确通过,但是察看结果树里为空

\color{blue}{问题分析}
模式(Mode)(采样结果发送模式)默认是Standard,在采样结果产生后立即发送

\color{green}{解决方案}
打开 [ jmeter 安装目录 ]\bin\jmeter.properties 文件

# 在 jmeter.properties 文件中,注释以下内容:
mode=Standard

错误15

\color{red}{问题描述}
Response code: Non HTTP response code: java.net.SocketTimeoutException
Response message: Non HTTP response message: connect timed out

\color{blue}{问题分析}
发生该错误时,jmeter已经连接上服务器,查看load time没有超过设定的request timeout时间,错误可能的原因是,服务器那边未处理该线程的请求,或者为保证服务能力,断掉了连接。
为了验证该猜想,持续大于半小时向服务器发送该并发数量的请求,一段时间后,request收到503的response,证明猜想

\color{green}{解决方案}

错误16

\color{red}{问题描述}
Java.NET.BindException: Address already in use: connect

\color{blue}{问题分析}
短时间内new socket操作很多,而socket.close()操作并不能立即释放绑定的端口,而是把端口设置为TIMEWAIT 状态,过段时间(默认240s)才释放,(用netstat -na可以看到),最后系统资源耗尽(windows上是耗尽了pool of ephemeral ports ,这段区间在1024-5000之间)

\color{green}{解决方案}
在运行 JMeter agent 的机器上,添加注册表条目HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

MaxUserPort 65334
TcpTimedWaitDelay 30

错误17

\color{red}{问题描述}
jmeter脚本运行的过程中,服务器性能参数没有明显变化 (CPU,内存,I/O),但request的响应时间很长。

\color{blue}{问题分析}
观察jmeter agent机器网络使用情况,网络使用持续达到带宽的限制峰值。request 发送的过程中pending在网络中,实际并发的request并没有同一时间到达服务器,所以服务器没有明显变化。

\color{green}{解决方案}
提高jmeter agent机器网络带宽。

错误18

\color{red}{问题描述}
java.io.IOException: Error writing to server
java.net.SocketException: Connection reset

\color{blue}{问题分析}
可能是本机的 JVM 太小了

\color{green}{解决方案}
打开 [ jmeter 安装目录 ]\bin\jmeter.bat 文件

# 在 jmeter.bat 文件中,修改以下内容:
set HEAP=-Xms256m -Xmx1024m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

错误19

\color{red}{问题描述}
java.net.SocketException: Unrecognized Windows Sockets error: 0: recv failed

\color{blue}{问题分析}

\color{green}{解决方案}
打开 [ jmeter 安装目录 ]\bin\jmeter.properties 文件

# 在 jmeter.properties 文件中,修改以下内容:(错误率降到0.25%)
javax.net.debug=ssl:handshake:verbose

错误20

\color{red}{问题描述}
java.net.SocketTimeoutException: Read timed out

\color{blue}{问题分析}

\color{green}{解决方案}
打开 [ jmeter 安装目录 ]\bin\jmeter.properties 文件

# 在 jmeter.properties 文件中,修改以下内容:(错误率降到0)
javax.net.debug=true

错误21

\color{red}{问题描述}
For performance it is advised to check "Interpret Condition as Variable Expression"
and use __jexl3 or __groovy evaluating to true or false or a variable that contains true or false.
${JMeterThread.last_sample_ok) can be used to test if last sampler was successful

\color{blue}{问题分析}
对于4.x之后的版本 JMeter 中的 If Controller,在Expression输入框中直接输入判断的表达式,如1 == 1、${threadNum} > 2,而不做求值计算(true/false)就执行JMeter是没有效的,达不到预期的效果。采用JMeter比较早期的版本(如:2.x版本),直接就写判断的表达式,并没有作真假求值运算也能被识别

\color{green}{解决方案}
1、在Expression输入框中,建议将判断条件解释为变量表达式,并使用__jexl3函数或__groovy函数对该变量表达式求值为true/false
2、可输入值为true/false的变量
3、${JMeterThread.last_sample_ok}可用于检测最后一个取样器是否成功执行

错误22

\color{red}{问题描述}
java.lang.IllegalStateException: Engine is busy - please try later

\color{blue}{问题分析}
1、可能是防火墙规则被阻止
2、控制机、执行机未设置需要连接的IP

\color{green}{解决方案}
1、关闭控制机、执行机的防火墙
2、打开 [ jmeter 安装目录 ]\bin\jmeter-server 文件

# 在 jmeter-server 文件中,控制机和执行机都需要设置需要连接的 IP
# 例如:当前机器(控制机或者执行机)的 IP 为 192.168.40.15,添加以下内容:
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.40.15

3、打开 [ jmeter 安装目录 ]\bin\system.properties 文件

# 在 system.properties 文件中,控制机和执行机都需要设置需要连接的 IP
# 例如:当前机器(控制机或者执行机)的 IP 为 192.168.40.15,添加以下内容:
java.rmi.server.hostname=192.168.40.15

错误23

\color{red}{问题描述}
Response code: Non HTTP response code:org.apache.http.conn.ConnectTimeoutException
Response message: Non HTTP responsemessage: Connect to 10.15.107.112:9089 timed out

\color{blue}{问题分析}
Non HTTPresponse code 说明没有收到来自服务器的 response。
导致 ConnectTimeoutException 错误的可能有 JMeter 本身问题,也可能是服务器问题。

\color{green}{解决方案}
通过分布式运行 JMeter 的方式来消除 JMeter 本身的影响

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容