System information as of Tue Dec 12 13:23:50 KST 2023
System load: 0.0 Processes: 181
Usage of /: 75.2% of 48.27GB Users logged in: 0
=> There are 4 zombie processes.
* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
just raised the bar for easy, resilient and secure K8s cluster deployment.
https://ubuntu.com/engage/secure-kubernetes-at-the-edge
Expanded Security Maintenance for Infrastructure is not enabled.
13 updates can be applied immediately.
To see these additional updates run: apt list --upgradable
157 additional security updates can be applied with ESM Infra.
Learn more about enabling ESM Infra service for Ubuntu 18.04 at
https://ubuntu.com/18-04
다른 script로 서버를 접속하려다가 의도치않게 오랜만에 토이 프로젝트 서버에 접속했는데 좀비프로세스가 있다는 메세지를 받았다.
좀비 프로세스란?
이미 죽은것과 다름없고, 부모 프로세스가 wait() 명령어를 내리지 않았기 때문에 남아있는 프로세스라고 한다. 리소스를 거의 안먹다 시피한다고 하니. 리소스 적인 문제는 없지만. pid를 차지하고 있는 문제가 있다.
pid 개수는 무한하지 않기 때문에, 좀비프로세스의 양이 굉장히 많아진다면 문제가 된다.
발생 원인
앞서도 말했지만. 시스템에게 삭제를 요청하며 프로세스가 종료 -> 시스템이 리소스 회수. 과정을 거치는데. 프로세스의 상태가 기록되는
시스템 프로세스 테이블에는 종료 요청한 프로세스가 남아있는 상태이다. 따라서 종료 대상 프로세스의 부모 프로세스가 wait() 함수를 호출 할 때까지 남아있게 된다.
해결방법
$ ps -ef | grep defunct | grep -v grep
또는
$ ps aux |egrep "Z|defunct"
4건 존재한다.
kill -9 명령어로는 좀비프로세스 종료가 안되므로, (이미죽었으니까) 부모 프로세스를 찾아서 SIGCHLD 를 날려서 자식 프로세스가 죽었음을 알려야 한다.
# 부모 프로세스 찾기!
$ ps -f <child_pid>
또는 그냥
$ ps -ef
를 입력하고 PPID 를 확인한다.
부모프로세스에게 kill signal 을 보내자
$ kill -s SIGCHLD <PPID>
안될 경우,
부모 프로세스를 죽일 수밖에 없다. ( 사이드 이펙트가 나올 수 있으므로, 함부로 하지 말것.. 확인 또 확인이 필요하다)
부모 프로세스를 강제로 죽일 경우 바로 반응이 온다.
참고:
https://askubuntu.com/questions/48624/what-are-zombie-processes
What are zombie processes?
With commands like top and the gui based System Monitor I can see that at the moment I have several zombie processes. What are zombie processes? Do they affect the performance of the system or the
askubuntu.com
'SERVER' 카테고리의 다른 글
linux Screen 사용법 (1) | 2024.05.02 |
---|---|
[Cloud Front] 클라우드 프론트 무효화 (1) | 2023.10.19 |
[SERVER] docker command ( Oracle cloud, ubuntu 18 ) (0) | 2023.08.24 |
[SERVER] docker / centos 8 / oracle cloud (0) | 2022.12.03 |
[SERVER] GitLab CI CD / oracle cloud / docker (0) | 2022.12.02 |