JMeter学习-017-java.net.SocketException: Permission denied: connect 解决方案

前几天,有了新的接口性能测试需求,同事在添加 HTTP请求 后,运行时响应信息如下所示:

 1 java.net.SocketException: Permission denied: connect
 2     at java.net.DualStackPlainSocketImpl.connect0(Native Method)
 3     at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
 4     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
 5     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
 6     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
 7     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
 8     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
 9     at java.net.Socket.connect(Socket.java:589)
10     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:127)
11     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
12     at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
13     at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)
14     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
15     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
16     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
17     at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:505)
18     at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:328)
19     at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
20     at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1141)
21     at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1130)
22     at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:431)
23     at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:258)
24     at java.lang.Thread.run(Thread.java:745)

经过问询谷大爷,查了一下,发现只要在启动脚本里添加 -Djava.net.preferIPv4Stack=true 参数,将其网络偏爱设置为 IPv4。设置如下所示:

启动配置文件路径:{JMeter 主目录}\bin

Linux 启动配置文件:jmeter.sh,添加如下启动参数设置:
        export JVM_ARGS="-Djava.net.preferIPv4Stack=true"

Winows 启动配置文件:jmeter.bat,添加如下启动参数设置:
        set JVM_ARGS="-Djava.net.preferIPv4Stack=true"

重新启动 JMeter 运行脚本即可解决之前的报错。

后记:

问题解决后,作为一名专职测试人员,我问自己难道是开发对此接口设置了 IPv4 偏好 ?!想想不应该呀。。。为防止用户在访问上述接口出现此问题,我还是去找相应的接口开发人确认了一下。经确认其未进行相应的设置,同时查看源码遍历 IPv 信息,也未发现有相应的设定!

新的问题出现了,是什么导致了其访问接口的时候,偏好了 IPv4 的呢 ????

正所谓,功夫不负有心人!后经努力,查询 JDK 的 Networking Properties 才得到了最终的答案,如下所示。

后来查询了一下 JMeter 的用户手册,发现可以通过修改其配置文件,实现在任意系统的移植,而不需要改每个系统对应的启动文件。

系统配置文件:{JMeter 主目录}\bin\system.properties,将 java.net.preferIPv4Stack 设置为 true 即可

时间: 2024-09-30 00:27:22

JMeter学习-017-java.net.SocketException: Permission denied: connect 解决方案的相关文章

【Jmeter】Address already in use : connect &&Permission denied: connect 解决方案

Address already in use : connect   该问题的原因为: Windows 提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们.就导致我们在短时间内跑大量的请求时将端口占满了. 解决方案:         1.cmd中,用regedit命令打开注册表 2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下, 1)右击parameters,添加一个

tomcat启动报错:java.net.BindException: Permission denied <null>:80

1,启动报错显示 [org.springframework.web.servlet.DispatcherServlet]FrameworkServlet 'springMvc': initialization completed in 382 ms Jun 01, 2015 6:39:06 PM org.apache.coyote.http11.Http11Protocol start SEVERE: Error starting endpoint java.net.BindException:

解决mac os x下 tomcat启动报 java.net.BindException: Permission denied <null>:80 错误

我在mac os x上启动tomcat的时候,报 java.net.BindException: Permission denied <null>:80,java.net.BindException: Permission denied <null>:443错误,443时因为我要弃用ssl服务. Mac OS X 因为要绑定1024以下的端口需要ROOT权限, 但是如果用root权限启动eclipse或tomcat又会造成, 启动创建的各类文件是root的,普通用户无法删除. 为此

gerrit集成gitweb:Error injecting constructor, java.io.IOException: Permission denied

使用gerrit账户在centos上安装gerrit,然后集成gitweb,gerrit服务启动失败,查看日志,报错信息如下: [2015-05-15 05:03:42,671] ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon java.lang.IllegalStateException: Cannot start HTTP daemon at com.google.gerrit.pgm.http.jetty.JettyS

Tomcat 启动报错 java.net.BindException: Permission denied :80

Tomcat一启动就报如下错误: Caused by: java.net.BindException: Permission denied <null>:80 at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:410) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640) at org.apache.coyote.

Tomcat启动时报错:java.net.BindException: Permission denied &lt;null&gt;:80 【转载】

本文转载自: http://blog.sina.com.cn/s/blog_4550f3ca0101g37l.html 问题起因:做负载均衡时需要将Web工程与Wap工程同时部署在一台Suse服务器上,为方便日后维护,我们分别为Web工程与Wap工程分配了不同的用户进行部署,并且端口使用分别为8080与80,Web工程使用默认8080端口,Tomcat正常启动并能正常访问,Wap工程使用80端口(修改server.xml),Tomcat启动一系列错误(见问题描述). 问题描述:Tomcat启动时

【转】adb控台中Permission denied的解决方案

原文网址:http://blog.csdn.net/wkl305268748/article/details/13504171 [前提]手机一定要root 在控制台中想要将电脑上c盘中的tcpdump文件导入到/data/local/tcpdump中 于是采用adb push c:/tcpdump /data/local/tcpdump命令,但提示Permission denied没有权限 于是使用命令adb shell进入超级用户查看了一下: 在d  rwx  rwx  --x中 第一个rwx

Socket java.net.SocketException: Connection reset的解决方案

上面这段代码,是最常用的的socket 发送方式,对于一般的socket链接都适用.但是在这里跟银行联调时一直报了一个错:java.net.SocketException: Connection resetat java.net.SocketInputStream.read(SocketInputStream.java:196)at java.net.SocketInputStream.read(SocketInputStream.java:122)at java.net.SocketInput

记录一个调了半天的问题:java.lang.SecurityException: Permission denied (missing INTERNET permission?)

Move the <uses-permission> elements outside of <application>. They need to be immediate children of the root <manifest> element. 不然就会出现crush! 不用申请权限,改个位置即可.