【测试】Jmeter 安装与常见问题踩坑

为了给自己的项目压测,从而进行一些性能优化,不得不使用Jmeter进行压测,在Jmeter中摸爬滚打了一天,自己发现了一些新手在使用中可能遇到的问题,写出此博客来进行总结。

安装

对于Jmeter安装来说,很简单,只需下载解压就行。推荐:https://www.cnblogs.com/mgzc-1508873480/p/7040997.html

对于其基本使用这里也不多做赘述,下面就谈谈我在使用Jmeter是遇到的一些问题:

 

使用时出现的一些问题:

1.使用Jmeter压测时程序处理请求抛出 ClassCastException 的异常导致聚合报告中 error,但自己网页执行相同操作则不会产生异常 

请检查maven pom.xml 文件中

我的原因是我项目中用到的是JDK8,自动生成的pom.xml文件中却是1.7,所以将这里注释掉或者删除掉就不会出现问题了。 

 

2.聚合报告出现error,且每次百分比差不多相同,打开详细情况会发现,经常大片成功与大片失败穿插,且程序无异常

在windows上压测出现了该问题,查询了很多原因,最终确定应该是windows上TCP/IP端口耗尽,他一次性只会产生这么多,还没等老的线程释放端口,又产生了新的需求,造成并发压测失败。

解决方案:

方案1:增加动态分配到客户端 TCP/IP 套接字连接的临时端口的上限:

             启动注册表编辑器。(   运行   regedit   )
             在注册表中,浏览到并单击以下注册表项。
             HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
             在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值,以增加可以动态分配到客户端的临时端口的数量:
             值名称  MaxUserPort     值数据     <在此输入一个 5000 到 65534 之间的十进制值>
             关闭注册表编辑器。

方案2:降低客户端 TCP/IP 套接字连接的超时值(默认值为 240 秒)

             启动注册表编辑器。(   运行   regedit   )
             在注册表中,浏览到并单击以下注册表项。
             HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
             在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值,以缩短关闭连接时,该连接处于 TIME_WAIT 状态               的时间。当连接处于 TIME_WAIT 状态时,套接字对无法重新使用:
             值名称  TcpTimedWaitDelay       值数据     <在此输入一个 30 到 240 之间的十进制值。>
             关闭注册表编辑器。

【注意】
             必须重新启动计算机,此更改才会生效。

             增加用于客户端 TCP/IP 连接的临时端口的范围将占用 Windows 内核内存。请勿将此设置的值增加至超过容纳客户端应               用程序套接字连接所需要的值,以便尽可能降低对 Windows 内核内存的不必要占用。

 

3、Jmeter在Linux服务器上命令行压测出现问题,运行日志中出现java.net.UnknownHostException错误

2019/04/20 16:02:34 ERROR - jmeter.util.JMeterUtils: Unable to get local host IP address. java.net.UnknownHostException: ecs-7f91: ecs-7f91: Name or service not known

[root@ecs-7f91 apache-jmeter-5.1.1]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1   localhost MDRADEL0 ecs-7f91     <---新增内容

~

 

[root@ecs-7f91 etc]# vim /etc/sysconfig/network

NETWORKING=yes                                         <--检查确认这种写法

HOSTNAME=BJ-TEST-11-kvm-221                 <--检查确认这种写法

这种解决方案在我执行第一次的时候成功了,但当我下次压测的时候又出现相同问题,打开hosts文件发现他又变成我没改之前的样子了,可能因为我在windows Jmeter上生成的测试文件(.jmx)上地址写的localhost,上传到linux云服务器上(服务器名字不是localhost)导致出现问题,因此,当我重新生成测试文件(这次ip地址直接写的我的云服务器ip地址),上传,命令行执行!成功!

 

4.压测的summary永远0

查看日志发现,在于我上传的.jmx文件,中包含了CSV数据文件,尽管我的测试并未引用它,但还是无法成功,他会报错没有找到该文件;

如果在云服务器上需要用数据文件压测,应当将CSV数据文件上传,vi更改已上传.jmx文件中CSV数据文件的位置,再进行压测。

 

关于服务器命令行压测或者界面压测的方法这里建议百度一下,很简单,希望我这里出现的问题能给你帮助。

全部评论

相关推荐

秋国🐮🐴:拿到你简历编号然后让你知道世间险恶
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务