GCP에서 E2-micro 등 저렴한 가상머신을 쓰는 이들 입장에서 CPU나 메모리 관리가 쉽지 않은 편입니다.
특히, VM 모니터링 시 10분 간격으로 CPU 사용량이 뛰는 경우가 있는데, 아래와 같은 조치를 시행하면 도움이 될 수 있습니다.
1. google osconfig-agent 중지
- 저는 이 행위를 제일 마지막에 했는데, 결과적으로 가장 유력한 범인입니다. 해당 agent는 VM의 메모리 및 디스크 사용량 모니터링을 지원하기 때문에 중지시키면 해당 기능을 쓸 수 없습니다.
sudo systemctl stop google-osconfig-agent
sudo systemctl disable google-osconfig-agent
2. 온갖 자동 업데이트 중지
- 자동 업데이트 관련된 기능도 주기적으로 메모리를 갉아먹을 수 있으므로 취한 조치입니다.
- /etc/apt/apt.conf.d/10periodic 파일 편집 -> APT::Periodic::Update-Package-Lists "0"; 로 수정 (숫자 0 대신 다른 숫자가 있음)
- /etc/apt/apt.conf.d/50unattended-upgrades 파일 편집 -> Unattended-Upgrade::Enable-Newsletter "false"; 로 수정
- sudo systemctl disable unattended-upgrades
- nano /etc/apt/apt.conf.d/20auto-upgrades 파일 편집 ->
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
Unattended-Upgrade::Automatic-Reboot "false"; 로 수정
3. LogPingOpsAgent 비활성화
sudo systemctl stop google-cloud-ops-agent
sudo systemctl disable google-cloud-ops-agent
4. rsyslog.conf 관련 오류 해결
- 가끔 'rsyslogd: action 'action-8-builtin:omfile' suspended (module 'builtin:omfile')' 이런 형태의 오류 메세지가 뜰 때가 있는데, 해당 오류와 함께 CPU가 튈 수 있어보여 취한 조치입니다. etc/rsyslog.conf 파일에서 $FileCreateMode 0640 -> $FileCreateMode 0644로 바꾸면 오류가 안뜸. rsyslogd 관련 오류가 없는 경우 상관없을 수 있습니다.
5. workload 관련 오류 해결(비활성화)
- systemctl list-timers | grep workload 로 워크로드 타이머를 확인. 글쓴이의 경우 'gce-workload-cert-refresh.timer'로 확인되어 아래와 같이 비활성화시켰습니다.
sudo systemctl disable gce-workload-cert-refresh.timer
sudo systemctl stop gce-workload-cert-refresh.timer
실제로 글쓴이가 진행했던 순서
- /etc/apt/apt.conf.d/10periodic 수정
APT::Periodic::Update-Package-Lists "0"; - /etc/apt/apt.conf.d/50unattended-upgrades 수정
Unattended-Upgrade::Enable-Newsletter "false"; - sudo systemctl disable unattended-upgrades
- /etc/apt/apt.conf.d/20auto-upgrades 수정
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
Unattended-Upgrade::Automatic-Reboot "false"; - sudo systemctl mask apt-news.service
(Created symlink /etc/systemd/system/apt-news.service → /dev/null. 메세지 뜸) - etc/rsyslog.conf 파일에서 $FileCreateMode 0640 -> $FileCreateMode 0644로 바꿈
- workload 비활성화
systemctl list-timers | grep workload 로 워크로드 타이머를 확인(gce-workload-cert-refresh.timer)
sudo systemctl disable gce-workload-cert-refresh.timer
sudo systemctl stop gce-workload-cert-refresh.timer - google-cloud-ops-agent 비활성화
sudo systemctl stop google-cloud-ops-agent
sudo systemctl disable google-cloud-ops-agent - google osconfig-agent 비활성화
sudo systemctl stop google-osconfig-agent
sudo systemctl disable google-osconfig-agent