上来先说环境,我用的电脑是win10(Java版本1.8)
使用的时候,一直在报错,我找遍了各种方法,一直再报这个错误代码,如下:
java.net.SocketException: Permission denied: connect at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:404) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:935) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:646) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:66) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1296) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1285) at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) at java.lang.Thread.run(Unknown Source)
具体体现在这里
1、如果对本地localhost使用,这里我使用的tomcat本地服务器,http://localhost:8080时候,使用jmeter就不会出现问题,就可以测试,但是只要连接外部网络的时候就会有以上的报错,
如下体现:(我试图测试一下百度get)
这里我循环了5次,每次都是报错的情况,其他的也尝试也不行
我这两天一直找了很多解决方法,兴许对您有用:
一、
后来使用直接全局配置进行更改
转自:https://www.cnblogs.com/fengpingfan/p/5079754.html
注:但是这个方法我尝试了,进行改变失效了
二、
看看别的错误代码是否有效果
解决
Socket closed
Non HTTP response code: org.apache.http.NoHttpResponseException (the target server failed to respond)
资料查询:https://wiki.apache.org/jmeter/JMeterSocketClosed
问题原因:在JMeter下,发送http 请求时,一般都是默认选择了use keepAlive(这个是什么?看后面资料),这个是连接协议,JMeter坑就在这里,默认勾选了这个(如果不勾选的话,也不会保存),但其配置JMeter.properties中的时间设置默认却是注销的,也是是说,不会等待,一旦连接空闲,则立马断开了,导致我们压测中出现了事务失败的情形。
转自地址
解决方法
还有一些细枝末节的操作,我也找了很多,没有解决问题,突然间看到一位兄弟说同样的环境下(win10,Java8)也出现这个问题,但是他在Linux环境下没有问题,我就去Linux环境下安装了一下jmeter就可以使用
所以我怀疑解决这个问题从两个方面入手:
- 换一下操作系统的环境,我使用就是这个方式解决问题(环境Ubuntu20.04, Java11)
- 我怀疑也许是Java版本的问题,可以尝试win0+Java11方法入手(这个我没尝试,之后有时间我可以补测试一下)
以下为Linux上可以成功运行。
附:Linux安装jmeter(Ubuntu20.04)
首先分为两部分
- 查询和Java是否安装成功
- 安装jmeter
首先查询Java是否安装成功
Java -version //查看Java的版本
这里采用自动安装
sudo apt install openjdk-8-jdk 或者 sudo apt install openjdk-8-jre-headless # 这个是apt给我推荐的,貌似这个安装的依赖少
Ubuntu安装 Javahttps://www.cnblogs.com/ziyue7575/p/13898610.html
之后就是去jmeter官网下载安装包,进行tgz解压
然后进行环境配置
参考:https://blog.csdn.net/gufenchen/article/details/106126324
小结
调试这个问题耗费的好多时间,但是最终还是在虚拟机Linux环境下可以使用了,也算解决这个问题了,之后还会有问题在前面,我会继续和大家一起分享的。



