前幾天,有了新的接口性能測試需求,同事在添加 HTTP請求 後,運行時響應信息以下所示:java
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。設置以下所示:apache
啓動配置文件路徑:{JMeter 主目錄}\bin
Linux 啓動配置文件:jmeter.sh,添加以下啓動參數設置:
export JVM_ARGS="-Djava.net.preferIPv4Stack=true"
Winows 啓動配置文件:jmeter.bat,添加以下啓動參數設置:
set JVM_ARGS="-Djava.net.preferIPv4Stack=true"網絡
從新啓動 JMeter 運行腳本便可解決以前的報錯。socket
後記:性能
問題解決後,做爲一名專職測試人員,我問本身難道是開發對此接口設置了 IPv4 偏好 ?!想一想不該該呀。。。爲防止用戶在訪問上述接口出現此問題,我仍是去找相應的接口開發人確認了一下。經確認其未進行相應的設置,同時查看源碼遍歷 IPv 信息,也未發現有相應的設定!測試
新的問題出現了,是什麼致使了其訪問接口的時候,偏好了 IPv4 的呢 ????spa
正所謂,功夫不負有心人!後經努力,查詢 JDK 的 Networking Properties 才獲得了最終的答案,以下所示。.net
後來查詢了一下 JMeter 的用戶手冊,發現能夠經過修改其配置文件,實如今任意系統的移植,而不須要改每一個系統對應的啓動文件。code
系統配置文件:{JMeter 主目錄}\bin\system.properties,將 java.net.preferIPv4Stack 設置爲 true 便可。blog
至此,此文順利完結,但願此文可以給初學 JMeter 的您一份參考。
最後,很是感謝親的駐足,但願此文能對親有所幫助。熱烈歡迎親一塊兒探討,共同進步。很是感謝! ^_^