![SIGTERM 이후에 이 프로세스가 종료되지 않는 이유는 무엇입니까?](https://linux55.com/image/62893/SIGTERM%20%EC%9D%B4%ED%9B%84%EC%97%90%20%EC%9D%B4%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EA%B0%80%20%EC%A2%85%EB%A3%8C%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
중단된 것 같은 프로세스가 있습니다.
프로세스를 다시 시작하려고 하면 시간 초과가 발생합니다.
service logstash_server stop
timeout: run: logstash_server: (pid 11797) 839061s, want down, got TERM
tail -f
로그에서 실행을 시도했지만 불행히도 아무것도 나타나지 않습니다. kill -15
해당 프로세스 도 시도했지만 여전히 중단됩니다. Top에서는 좀비 프로세스로 표시하지 않습니다.
지난 달에 이런 일이 세 번째로 발생했기 때문에 이 프로세스가 이 상태에 있는 "왜"인지 알아내려고 노력하고 있습니다.
파일 설명자와 시스템 로그를 확인했지만 주목할 만한 내용은 없었습니다.
파일 설명자 =>http://pastebin.com/90rDHhT4
시스템 로그 출력 => http://pastebin.com/xBaMaL9Z
lsof | grep logstash
=> 의 출력http://pastebin.com/gsSdPyg5
프로세스에서 strace를 실행해 보았더니 FUTEX_WAIT만 표시됩니다.
strace -p 11797
Process 11797 attached
futex(0x7f6d95d8e9d0, FUTEX_WAIT, 11811, NULL
보내기 전에 제가 할 수 있는 다른 조치가 있나요 kill -9
?
고쳐 쓰다
개발자에게 송장을 보냅니다. 문제는 일주일에 한 번 정도 지속됩니다.
답변1
이러한 문제를 진단하는 도구는 다음과 같습니다.
lsof
. 열린 파일이 나열되며 파일이 보류 중인 네트워크 공유에 있는지 확인할 수 있습니다. 아니면 TCP 연결을 기다리세요. 등.strace
. 어떤 시스템 호출이 걸려 있는지, 또는 실제로 뭔가를 하고 있는지 확인하세요.- 데몬에 있는 디버그 로깅 옵션입니다. 일반적으로 충돌이 발생하기 전에(보통 시작 시) 이러한 옵션을 켜야 합니다.
- Rahul이 언급한 소프트웨어 디버깅 도구(Thread Dump
gdb
또는jdb
기타 관련 도구) . 지금 소프트웨어를 디버깅하고 있지만 결국 원인을 파악해야 할 수도 있습니다.
lsof
기본적으로 strace
시스템/구성에 문제가 있는지 다시 확인하세요. 그 외에도 소프트웨어 개발자의 도움이 정말로 필요합니다.
편집: 업데이트에 따라 버그를 보고하거나 작성자에게 도움을 요청해야 할 가능성이 높습니다. 주변에 개발자가 없다면 살펴봐도 됩니다.
답변2
종료할 수 없는 프로세스(SIGKILL을 사용하거나 루트에 의해서도)는 프로세스 상태 D("무중단 휴면")에 있을 가능성이 높습니다. 뚜렷한 이유 없이 이 조건이 지속되면 프로그램이 일부 I/O 드라이버의 버그를 유발할 가능성이 높습니다. 재부팅 외에는 할 수 있는 일이 거의 없습니다.
답변3
이것이 도움이 될 것입니다 -http://man7.org/linux/man-pages/man2/futex.2.html
이는 버그일 가능성이 높으며 개발자에게 전달해야 할 수도 있음에 동의합니다.