2011-10-20 6 views
1

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); 
    } 

그래서 내가 120 개 스레드 내 @Test 5000 번 실행 TestNG의 말씀입니다. 자바 콘솔에서 많은 블로킹 스레드를 볼 수 있습니다. 이것은 내 코드가 아니라 본질적으로 내가하는 일의 흐름입니다. 각 스레드 testNG 내 테스트에 대한 또한 별도의 HTTP 클라이언트를 생성하는 spawn 예상합니다. 그렇다면 모든 스레드가 차단됩니다. 여기

는 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) 

답변

0

그것은 그 시간 동안 네트워크에 기다리고 있음을 수 있습니다.

TestNG와 관련된 코드를 게시하면 도움이 될 수 있습니다.

0

실행중인 운영 체제는 무엇입니까? 자바는 호스트 OS의 특정 세부 사항과 한계로부터 당신을 단절 시키는데 꽤 잘할 수 있지만, 할 수없는 한 가지는 OS의 커널, 네트워크 드라이버 및 네트워크 하드웨어가 허용하는 허용 가능한 네트워크 연결 수를 능가하는 것입니다. 결합 될 때. http://www.techiecorner.com/34/how-to-adjust-your-window-xp-tcp-connection-to-boost-your-bt-download-speed/에서

: Microsoft Windows XP 서비스 팩 2 (SP2)의 출시와 함께

, 그것은 초 당 10 연결 [원문]에 동시 TCP 연결 제한이 있습니다.

+0

대부분 Mac에서 실행됩니다. 사용 된 연결을 모니터하는 방법이 있습니까? 만약 내가 한도 내 버그/문제가 내 코드 – ducati1212

+0

@ ducati1212만큼 컴퓨터 한도 치고있어 괜찮아요 OS X은 훨씬 더 그런 것들에 대해 관대 같습니다. 연결의 수를 제한하는 내장 된 방화벽에 문제가있는 것처럼 보이지만이를 확인하는 방법이나 구성 할 수 있는지 여부는 알 수 없습니다. 내 생각에 네가 교수에게이 특별한 요인에 대해 물어볼지도 모른다. –

관련 문제