我正在使用testNG和java http客戶端爲我們的API編寫快速加載測試。我的線程似乎阻止超過預期,所以我想確保http客戶端正在做我的想法。我的基本僞代碼是Java HTTP客戶端和線程
class 1
@test method{
some junk
myHttpWrapper my = new myHttpWrapper()
}
class 2
public myHttpWrapper{
HttpClient client = new DefaultHttpClient();
bunch of packaging up a post params
HttpResponse response = client.execute(post);
}
所以我告訴testNG在120個線程中運行我的@test 5000次。我在java控制檯中看到很多阻塞線程。這不是我的代碼,而是我正在做的事情的流程。我希望每個線程testNG都會爲我的測試生成一個單獨的http客戶端。如果這就是爲什麼所有線程都被阻塞的原因。
這裏是塊所看到jconsole中一個典型的線程堆棧:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:149)
org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:110)
org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:264)
org.apache.http.impl.conn.LoggingSessionInputBuffer.readLine(LoggingSessionInputBuffer.java:115)
org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98)
org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645)
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
ss.qa.test_files.HTTP_Methods.sendPost(HTTP_Methods.java:91)
ss.qa.test_files.apiHelper.ActivateCoupon(apiHelper.java:376)
ss.qa.test_scripts.myPerfTest.ActivateCoupon(BACPerfTest.java:85)
它主要運行在mac上。有沒有辦法監控連接使用?我很好,如果我打到機器限制,只要它不是我的代碼的錯誤/問題 – ducati1212
@ ducati1212它看起來像OS X是更加寬容這樣的事情。看起來內置防火牆可能會限制連接數量,但我不知道如何檢查該問題,或者可以配置該設置或由誰來設置。我想你可能會問Google教授這個特殊的因素 –