[Fri Nov 21 00:14:39 2025] program invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
[Fri Nov 21 00:14:39 2025] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=cron.service,mems_allowed=0,global_oom,task_memcg=/system.slice/cron.service,task=program,pid=3673482,uid=0
[Fri Nov 21 00:14:39 2025] Out of memory: Killed process 3673482 (program)
total-vm:6626868kB (6.5GB)
anon-rss:1607844kB (1.57GB)
file-rss:1664kB
shmem-rss:0kB
UID:0
pgtables:10020kB
oom_score_adj:0
- OOM (Out Of Memory)이 Go 코드 실행 중에 발생
- 최초 발견 시에는 프로그램 시작 시점으로부터 4~5분 정도가 경과한 시점에 발견하였음
- 해당 프로그램은 crontab을 통해 매일 00:00에 실행되는 프로그램임
- 로컬 환경에 빠르게 작업할 용도로 작성해 최적화에 대해 전혀 고민하지 않고 작성함
- 문제가 발생한 환경은 여기에서 실행 중인 Xen Hypervisor의 Guest VM 중 하나인 gateway
- gateway VM의 전체 메모리는 RAM 1.9GB, 스왑 3.7GB
- 해당 프로그램의 프로세스는 약 1.5~1.6GB 정도의 anon-rss와 6GB 정도의 total-rss를 사용하고 있었음
- 현재 환경에서 실행하는 경우 VM 메모리를 추가 증설하는 것이 가장 올바른 선택이나, 추후 k8s로 이관할 계획이므로 최적화에 대해 고민할 필요가 있음
- 해당 프로그램의 메인 처리 흐름은 다음과 같음:
- 데이터베이스를 연결하고 테이블을 조회하여 데이터를 조회함
- 조회된 데이터를 기반으로 외부 API를 호출하여 데이터를 조회함
- 조회된 데이터를 기반으로 데이터베이스에 저장함