2012-07-10 3 views
2

Java 응용 프로그램은 클라이언트와 서버로 구성됩니다. 우리의 프로덕션 환경에서는 연결을 설정하는 데 오랜 시간이 걸립니다 (~ 40 초).Java 응용 프로그램에서 TCP 핸드 셰이크가 매우 느림

우리의 다른 환경에서
start     client > server SYN 
2 milliseconds later server < client SYN,ACK 
38 *seconds* later  client > server ACK 

, 모두 3 개 개의 패킷이 거의 순간적으로 발생합니다

우리는 tcpdump를 사용하고 연결이 설정되면 다음 패킷을 볼 수있는 네트워크 트래픽을 캡처.

누구나 38 초 지연의 원인을 제안하거나 진단 단계를 제안 할 수 있습니까? 이는 프로덕션 환경이므로 진단 코드를 변경하기가 어렵다는 점에 유의하십시오.

  • 클라이언트는 내부적으로 java.nio.channel.SocketChannel.connect (..)를 사용 Apache Mina 1.0.1에서 SocketConnector를 사용하여 여기에

    는 우리의 환경에 대한 몇 가지 세부 사항입니다.
  • 는 클라이언트가 7.0.0.17
  • 자바 버전 = 1.6.0, 자바 컴파일러 = j9jit24, 자바 VM 이름 = IBM J9 VM
  • OS는 AIX 버전 6.1
+0

tcpdump가 클라이언트 또는 서버입니까? –

+0

* * tcpdump가 클라이언트에서 온 것 같습니다 (불행히도 저에게 잡히지 않았습니다). –

+1

그러면 클라이언트의 속도가 느려집니다. SYNC-ACK와 ACK 사이의 AIX 스택에서 어떤 일이 일어나고 있는지 읽어 볼 수 있습니다. –

답변

1

는 IBM WebSphere 내부에서 실행 설명자가 부족하거나 TCP 허용 대기열이 가득 찼습니까?

+0

클라이언트 측 또는 서버 측을 언급하고 있습니까? 내가 물어 보는 이유는 허용 대기열이 서버 측에만 관련이 있다고 가정하기 때문에 지연이 발생하는 곳이 아닌 것 같습니다. –

+0

하, 네, 네 말이 맞아. –