systemd CPUQuota로 CPU 폭주 방지하기
CPU를 독점하는 프로세스가 전체 서버를 망치지 않도록, 서비스 단위로 상한을 거는 방법
운영에서는 “한 서비스의 CPU 폭주”가 서버 전체 장애로 이어지는 경우가 많습니다. systemd의 CPUQuota=는 서비스 단위로 CPU 사용 상한을 걸어 다른 서비스까지 같이 죽는 상황을 줄여줍니다.
관련 용어: CPUQuota
1) 의미 이해하기
CPUQuota=100%는 대체로 “CPU 1코어를 100% 사용”에 해당합니다.- 멀티코어 서버에서는
200%,400%처럼 코어 수에 맞춰 더 크게 잡을 수 있습니다. - 값은 “정확한 성능 튜닝”이 아니라 폭주 방지용 가드레일로 쓰는 게 실전에서 유용합니다.
2) 예시 (유닛 파일)
[Service]
CPUQuota=200%
Restart=always
3) 운영 팁
- CPU 제한을 걸면 “응답 지연”이 늘 수 있으므로, rate limit/캐시와 같이 적용하면 효과가 큽니다.
- 장애 원인을 숨기지 않도록, 메트릭/로그로 “스파이크”는 반드시 남게 합니다.
관련 문서: nginx에서 봇/abuse 트래픽 대응하기