본문 바로가기

카테고리 없음

GCP(Google Cloud Platform) 가상머신(VM)에서 일정 주기(10분)마다 CPU 사용이 증가할 때 가능한 조치 (Ubuntu 기준)

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

 

실제로 글쓴이가 진행했던 순서

  1. /etc/apt/apt.conf.d/10periodic 수정
    APT::Periodic::Update-Package-Lists "0";
  2. /etc/apt/apt.conf.d/50unattended-upgrades 수정
    Unattended-Upgrade::Enable-Newsletter "false";
  3. sudo systemctl disable unattended-upgrades
  4. /etc/apt/apt.conf.d/20auto-upgrades 수정
    APT::Periodic::Update-Package-Lists "0";
    APT::Periodic::Unattended-Upgrade "0";
    Unattended-Upgrade::Automatic-Reboot "false";
  5. sudo systemctl mask apt-news.service
    (Created symlink /etc/systemd/system/apt-news.service → /dev/null. 메세지 뜸)
  6. etc/rsyslog.conf 파일에서 $FileCreateMode 0640 -> $FileCreateMode 0644로 바꿈
  7. 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
  8. google-cloud-ops-agent 비활성화
    sudo systemctl stop google-cloud-ops-agent
    sudo systemctl disable google-cloud-ops-agent
  9. google osconfig-agent  비활성화
    sudo systemctl stop google-osconfig-agent
    sudo systemctl disable google-osconfig-agent