우리의 suse 리눅스 서버에서 사용중인 클라이언트 서버 응용 프로그램이 있습니다.
때때로 클라이언트 측에서 TCP 소켓이 사라지고 서버 측의 소켓의 다른 쪽 끝이 존재하는 경우가 있습니다.변경하려는 TCP 종료 시간 초과
Linux 서버에서 백엔드를 중지하면 백엔드는 나머지 모든 TCP 연결과 "좀비"소켓을 닫으려고합니다.
(strace로 본다).
백엔드가 더 이상 클라이언트 측에 TCP 연결을 닫으려고 할 때 [FIN, ACK] 패킷을 대상으로 보냅니다. 그리고 물론, 아무것도 돌아 오지 않습니다.
백엔드가이 패킷을 보내기 위해 반복합니다. 처음으로 몇 분의 1 초만 기다렸다가 반복하면 길어지고 길게 기다립니다. 결국 그것은 그것을 반복하기 위해 몇 초 기다린다. 그러나 15 초 후 시간 초과가 발생하고 다른 tcp 연결을 종료합니다.
이제 15 초 제한 시간이 어디에서 오는지 알 수 없습니다. 나는 그것을 바꾸고 싶다.
대단히 감사합니다.
새 코드를 더 많이 추가하는 대신 * 설명하는 버그 *를 수정하는 것이 좋습니다. 1. 소켓은 그냥 사라지지 않습니다. 그들은 닫히거나 응용 프로그램에서 누출됩니다. 소켓 누수가 주요 문제이며 해결해야합니다. 2. TCP 응용 프로그램은 항상 상대방에 의한 단절을 감지 할 수 있습니다. 응용 프로그램이 그렇게하지 않으면 잘못 작성되고 다시 수정해야합니다. – EJP