연결을 강제 종료(닫기 대기)할 수 있나요?

연결을 강제 종료(닫기 대기)할 수 있나요?

아래와 같이 포트 6060에서 lsof를 실행하면

# lsof -i TCP:6060 | more
COMMAND     PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
app_lot 3495 root   12u  IPv6  9238779      1t0  TCP *:krb0934 (LISTEN)
app_lot 3495 root   13u  IPv6  9208460      1t0  TCP linux_server45:krb0934->43.55.3.22:5992 (CLOSE_WAIT)
app_lot 3495 root   21u  IPv6  9402392      1t0  TCP linux_server45:krb0934->34.22.50.28:6005 (CLOSE_WAIT)
app_lot 3495 root   28u  IPv6  9208462      0t0  TCP linux_server45:krb0934->54.33.6.161:23096 (CLOSE_WAIT)

기다리는 사람들이 많이 보이던데,

우리는 pid를 죽이고 싶지 않습니다 - 3495

강제 종료(CLOSE_WAIT)가 가능합니까?

애플리케이션을 다시 시작할 필요가 없습니다 - app_lot

답변1

CLOSE_WAIT이 상태(또는 다른 상태)의 소켓은 외부적으로 닫힐 수 없습니다 . 오작동하는 프로그램이 CLOSE_WAIT연결을 축적하는 경우 이를 해제하는 유일한 방법은 해당 프로그램을 종료하는 것입니다.

이는 애플리케이션의 버그이며 가장 좋은 해결책은 이를 수정하는 것입니다. (이것이 가능하거나 현실적이라는 말은 아닙니다.) 또는 디버거를 사용하여 연결하고 디버거 연결을 닫을 수도 있습니다.

관련 정보