원격 프로세스가 중지되어도 소켓은 ESTABLISHED 상태로 유지됩니다.

원격 프로세스가 중지되어도 소켓은 ESTABLISHED 상태로 유지됩니다.

클라이언트와 서버 사이에 celery-config를 실행하고 있습니다. rabbitmq클라이언트 프로세스는 서버의 포트 5672에서 연결을 엽니다. netstat -np서버에서 이것을 사용하여 소켓이 설정되었다고 보고했기 때문에 확인했습니다.

클라이언트의 프로세스가 중단되어 더 이상 존재하지 않습니다. 그러나 netstat -np여전히 연결이 설정된 것으로 표시됩니다. 또한 클라이언트에서 실행하여 netstat -np해당 포트의 서버에 연결되는 프로세스가 없음을 확인했습니다.

소켓이 ESTABLISHED 상태로 유지되는 이유는 무엇입니까?

답변1

AMQP필요클라이언트가 연결을 제대로 닫지 않으면(장기 실행 작업의 경우) 연결의 서버 측이 열린 상태로 유지됩니다. 더 읽어보세요이 게시물.

이러한 연결을 수동으로 닫거나 rabbitmqctlcron 작업에서 이를 수행하는 스크립트를 작성할 수 있지만 둘 다 애플리케이션 수준 문제에 대한 매우 보기 흉한 외부 접근 방식입니다.

가능하다면 열어주세요심장 박동그리고 시간 초과를 알려진 가장 긴 처리 작업보다 15-20% 더 길게 설정하세요. 이렇게 하면 하트비트 시간 초과 후 "죽은" 연결이 재활용되지만, 너무 오랫동안 사용했던 클라이언트의 연결도 끊어지므로 주의하세요.

자세히 알아보기심장 박동그리고토끼MQCTL(다른 섹션을 참조하세요).

관련 정보