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

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 即可。
 
 
 
至此,此文顺利完结,希望此文能够给初学 JMeter 的您一份参考。
 
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
 
 
 
 

我本渺小,但山峰,我一次次绝顶!


PS:若有错误,敬请告知,不胜感激!
Copyright @范丰平 版权所有,如需转载请标明本文原始链接出处,严禁商业用途! 我的个人博客链接地址:http://www.cnblogs.com/fengpingfan

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值