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
tcpdump가 클라이언트 또는 서버입니까? –
* * tcpdump가 클라이언트에서 온 것 같습니다 (불행히도 저에게 잡히지 않았습니다). –
그러면 클라이언트의 속도가 느려집니다. SYNC-ACK와 ACK 사이의 AIX 스택에서 어떤 일이 일어나고 있는지 읽어 볼 수 있습니다. –