2015년 4월 27일 월요일

좀비(Zombie) 프로세스란?

자식 프로세스(child process)가 종료하면 부모 프로세스(parent process)는 그것을 다시 거두어 들이게 되어 있습니다. 즉 자식 프로세스가 종료하면 그 상태를 리턴 받아 체크 한다는 뜻입니다.

좀비 프로세스는 부모 프로세스가 거두어 들이지 못한 프로세스들입니다. 이것들은 메모리를 차지하지 않고 디스크 용량, IO, CPU 시간 또한 전혀 차지하지 않고 다만 이 프로세스들은 프로세스 테이블의 용량만을 차지하고 있습니다.

보통 이것은 별 문제가 되지는 않습니다만 프로세스를 거의 한계 용량에 다다를 정도로 많이 실행시키는 부하가 많이 걸리는 시스템의 경우, 혹은 자식 프로세스를 많이 만들어 내기만 하고 거의 거두어들이지 않는 그런 상황일 경우 문제가 될 수 있습니다. 이것은 대부분 소프트웨어의 버그이며 시스템 크래쉬의 원인이 될 수 있습니다. 

부모 프로세스가 종료될 때 아직 거두어들이지 못한 자식 프로세스들은 모두 init 프로세스에 의해 거두어들여지게 되는데 이 과정은 시스템 로드가 많이 걸려있는 상황에선 오랜 시간이 걸릴 수도 있습니다. 많은 좀비 프로세스들이 매우 나쁜 영향을 미칠 수 있습니다. 왜냐하면 그 프로세스들은 여러분이 그 프로세스를 깨끗이 끝내기 위해서 실행해야 할 명령을 제대로 실행되지 못하게 할 수도 있기 때문입니다.

만약 그런 일이 생긴다면 셧다운만이 유일한 해결책입니다. 또는 ulimit을 이용해서 위험한 작업을 수행할 때는 미리 한계를 지워 줄 수도 있습니다.

댓글 없음:

댓글 쓰기