Linux(RHEL 5.5)에서 실행 중인 http 프록시가 있고 클라이언트로부터 [SYN] 패킷을 받은 후 간헐적으로 [SYN,ACK] 패킷으로 응답하지 않습니다. 이 문제는 에이전트를 다시 시작하면 되돌릴 수 있습니다. 에이전트 프로세스에 대해 gstack을 실행했지만 각 스레드의 스택에 문제(중지)가 표시되지 않았습니다. 이 문제가 발생하는 동안 "SYN_RECV" 상태에 있는 연결은 100개 미만이었습니다.
어떤 아이디어가 있나요? 이와 같은 문제는 어디에서 디버깅을 시작해야 합니까?
어떤 조언이라도 대단히 감사하겠습니다.
답변1
SYN 및 ACK 부족은 일반적으로 서버 소프트웨어가 accept
연결되지 않았음을 나타냅니다. 이는 여러 가지 이유 때문일 수 있으며, 대부분 일종의 리소스 고갈일 가능성이 높습니다. 서버 프로세스를 시도하여 시스템 호출 strace
에 있는지 확인 accept
하거나 선택을 위해 파일 설명자의 서버 소켓에서 작업을 수행할 수도 있습니다 select
.poll
답변2
방화벽 문제인 것 같습니다. TCP 연결이 첫 번째 SYN+ACK 응답을 받으면 패킷이 프록시 서버로 전송되지 않을 가능성이 높습니다.
서버 측과 클라이언트 측을 확인하십시오.