systemd로 CPU 과부하 방지, 자동 재시작까지!
LXC 컨테이너 내 avahi-daemon의 과도한 CPU 사용 문제를 해결하기 위한 방법 제시
systemd의 CPUQuota를 활용하여 CPU 사용량을 제한하고, watchdog 스크립트와 타이머를 통해 과부하 시 자동 재시작 구현
커뮤니티에서는 systemd의 유연성과 journalctl을 통한 감사 기능에 긍정적인 평가를 보냄
systemd를 이용한 CPU 사용량 제한
저자는 systemd의 CPUQuota 설정을 통해 특정 서비스의 CPU 사용량을 제한하는 방법을 제시한다. 구체적으로, `systemctl edit` 명령어를 사용하여 서비스 유닛 파일을 수정하고, `CPUAccounting=yes`와 `CPUQuota=10%` 옵션을 설정한다. 따라서, CPU 사용량 제한을 통해 자원 고갈을 방지하고, 시스템 안정성을 확보할 수 있다.
Watchdog 스크립트 및 타이머 구현
과도한 CPU 사용 시 자동 재시작을 위해 watchdog 스크립트와 systemd 타이머를 활용한다. CPUUsageNSec 델타 값을 기반으로 CPU 사용량을 모니터링하고, 임계치를 초과하면 서비스를 재시작한다. 반면, /run 디렉토리에 상태를 저장하여 단기적인 CPU 스파이크를 무시하고, 지속적인 과부하를 감지한다.
실제 시스템 적용 가이드
제공된 템플릿을 활용하여 다른 서비스에도 쉽게 적용할 수 있다. 구체적으로, `/usr/local/sbin/cpu-watch.sh` 스크립트를 생성하고 실행 권한을 부여한 후, systemd 유닛 파일과 타이머 파일을 설정한다. 따라서, journalctl을 통해 로그를 확인하고, 필요에 따라 임계값을 조정하여 시스템의 안정적인 운영을 보장할 수 있다.