Server관련/Sever(OS)

[Unix] 좀비 프로세스 대치법

saltdoll 2008. 9. 9. 09:59
반응형
1. 현상 특정 장비의 zagent(자원 모니터링 프로세스)가 defunct인 좀비 프로세스로 되어 장비의 프로세스가 신규 자원을 할당을 받지 모해서 기존 서버의 프로세스에서 서비스를 주관하는 프로세스가 오류가 발생함. "ps -ef |grep defunct" 커맨드로 확인할 수 있음. 


2. 해결 방안 1차적인 해결 책 : zagent 프로세스를 일정 주기를 정해서 주기적으로 재시작함(어쩔 수 없을 경우). 근본적인 해결책 : zagent 프로세스에서 자식 프로세스의 좀비 프로세스화 되지 않게 구현이 되어야 하므로 업체에 개선 항목으로 올린 상태임. 


 3. 좀비 프로세스란? 정의 : fork() 방식에서 발생하게 되는데 자식 프로세스가 종료할 경우 부모 프로세스에게 시그날을 송부하여 부모 프로세스가 정상적으로 자식 프로세스를 수거하여 자원을 해제하여야 하는데 계속 시그널을 받을 수 있는 상태가 되어 자식 프로세스는 살아있는 시체 프로세스가 되는 것을 말함. 문제점 : 자식 프로세스가 죽지 않고 메모리와 프로세스 엔트리가 유지되어서 시스템 자원을 지속적으로 소비하게되어 결국에는 다른 프로세스에게 자원 할당을 못하는 등의 영향을 주게 됨. 해결 방안 : 부모 프로세스가 기동중이었을 경우 프로그램 내부에서 signal을 catch하여 시그널 접수 처리하는 로직 필요함. 즉, waitpid()함수 등을 사용하여 부모 프로세스는 자식 프로세스가 죽기를 기다리게 해야 함. 태그 : 모니터링 zagent zombie

http://www.mimul.com/pebble/default/2007/06/02/1180749360000.html



반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)