GCP에서 VM을 운영하다 갑작스럽게 CPU 사용량이 치솟는 현상을 겪었습니다.

거의 무슨 마라톤 하고 온 심박수도 이렇지는 않을 것 같음... 폭발할 것 같은 CPU 사용량 보세요... 가뜩이나 사이즈도 작은 서버에 도대체 뭘 그렇게 많이 쓴다고 이러는 걸까.... 구글링을 아무리 돌려도 저렇게 꾸준히 높은 CPU 사용량에 관한 내용은 전혀 없었다. 다들 10분 간격으로 오른다고만 하지 아무것도 안 하고 저렇게 내내...?
아무튼 다른 블로그에서 힌트를 얻어서 해결 완료!!!
1. SSH에 들어가서 top 명령어 실행
GCP VM 콘솔에서 문제가 발생한 인스턴스를 선택하고, SSH에 접속한다.
top
2. top 로그에서 비정상적인 프로세스 확인
top 로그가 출력 되면 아래와 같이 CPU의 사용율 상태와 실행 중인 프로세스들이 나온다.

%Cpu(s): 3.4 us, 8.3 sy, 0.6 ni, 7.0 id, 79.2 wa
더보기
- us (user): 사용자 공간에서 실행 중인 프로세스가 CPU를 사용한 비율
→ 예) 일반 애플리케이션, 사용자 프로그램들이 CPU를 3.4% 사용했다는 의미 - sy (system): 커널(시스템) 공간에서 실행 중인 프로세스가 CPU를 사용한 비율
→ 예) 운영체제 내부 작업, 드라이버, 시스템 콜 등이 8.3% 사용했다는 의미 - ni (nice): nice 값이 조정된 사용자 프로세스가 CPU를 사용한 비율
→ 우선순위를 변경한 사용자 프로세스가 0.6% 사용했다는 의미 - id (idle): CPU가 유휴 상태로 아무 작업도 하지 않은 비율
→ CPU가 7.0% 쉬고 있었다는 의미 - wa (iowait): CPU가 I/O (입출력) 작업이 완료되기를 기다리며 대기한 비율
→ 디스크, 네트워크 등 입출력 작업 대기 때문에 CPU가 79.2% 대기 상태였다는 의미
가장 많은 리소스를 사용한 프로세스 리스트를 순서대로 볼 수 있다.
업데이트 및 로그 관련 프로세스들이 내 코드 보다 더 많은 cpu 사용량을 차지한 다는 것을 알 수 있었다.
| PID | COMMAND | CPU | MEM | 설명 |
| 2181 | apt-check | 25.2 | 15.0 | 업데이트 확인 |
| 552 | snapd | 21.6 | 1.3 | Ubuntu 패키지(snapd) 관리 서비스 |
| 897 | otelopscol | 13.3 | 7.4 | GCP Monitoring용 수집기 |
| 1365 | java | 0.7 | 28.6% | 백엔드 앱 |
3. 비정상 프로세스 사용 중단
자동 업데이트 중단
sudo systemctl stop apt-daily.timer
sudo systemctl disable apt-daily.timer
sudo systemctl stop apt-daily-upgrade.timer
sudo systemctl disable apt-daily-upgrade.timer
# 혹시 실행 중이라면 kill
sudo kill -9 2255 2181
GCP Ops Agent (otelopscol) 중단
- 이걸 중단하게 되면 GCP의 로그를 볼 수 없음으로 이건 굳이 안 해도 될 것 같다.
sudo systemctl stop google-cloud-ops-agent
sudo systemctl disable google-cloud-ops-agent
4. CPU 사용량 그래프 변화 확인
극단적으로 줄어든 CPU 사용량을 확인했고, top 로그를 찍어 또 확인 해보니 쓸데없는 cpu 사용을 하는 것들은 보이지 않았다.


5. 왜 이런 일이 일어난 걸까?
리눅스 서버를 초기 설정할 때부터 기본으로 포함된 서비스들이 자동으로 실행되도록 설정되어 있기 때문이다.
- apt-check, check-new-release, snapd
- 역할 : 시스템 자동 업데이트 확인, 새로운 릴리즈 버전 확인
- 원인 : Ubuntu는 기본적으로 자동 업데이트 타이머가 설정되어 있음(GCP 기본 설정도 포함)
- 이 서비스들이 VM 부팅 시 자동으로 실행 되어 CPU 폭주로 이어질 수 있다. - otelopscol (Ops Agent Collector)
- 역할 : GCP의 Cloud Montioring / Logging을 위한 로그/메트릭 수집기
- 원인 : GCP VM을 만들 때 운영 에이전트 설치 옵션을 체크한 경우 (혹은 GCP에서 기본 제공 할 수도 있음)
- 로그 수집량이 많거나, 디스크/네트워크 병목 현상이 있을 경우 과한 리소스를 사용하게 된게 증가의 원인
'서버' 카테고리의 다른 글
| docker-compose 작성으로 Spring Boot + PostgreSQL 개발 환경 구축하기 (1) | 2025.06.25 |
|---|---|
| GCP 가상 머신에 Nginx 리버스 프록시와 무료 SSL(Let's Encrypt) 적용해 Mixed Content 오류 없애기 (1) | 2025.06.22 |
| GCP VM 인스턴스 생성부터 SSH 키 연결, 고정 IP 설정, 방화벽 설정까지 한 번에 정리 (3) | 2025.06.13 |
| GCP에 Spring Boot + PostgreSQL Docker 배포하기 (포트 설정 및 구성도 포함) (0) | 2025.06.10 |
| 우분투 25.04 서버에 도커 설치하기 (Ubuntu 25.04 / Plucky Puffin) (0) | 2025.06.09 |