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 的您一份參考。

最后,非常感謝親的駐足,希望此文能對親有所幫助。熱烈歡迎親一起探討,共同進步。非常感謝! ^_^

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM