도커에서 돌고 있던 java 프로세스가 Out of Memory로 강제 kill 당했다.
현상은 작동되던 프로세스가 정상작동이 안되는 것인데, 이것이 OOM(out of memory) 에러인지 확인해보기 위해서는 다음과같이 확인하면 된다.
1. syslog 를 확인한다.
우분투 /var/log 의 syslog를 확인한다.
아래 내용을 보면 oom-kill 로 문제 프로세스가 kill당하고,
그 프로세스를 담고 있던 도커 컨테이너가 delete 되는 것을 확인할 수 있다.
oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=d20ddfa000acb059135d0036dd8f34a1e2f9c2579cf24032a372e704598c4f19,mems_allowed=0,global_oom,task_memcg=/docker/d20ddfa000acb059135d0036dd8f34a1e2f9c2579cf24032a372e704598c4f19,task=java,pid=1069553,uid=0
[9856994.554801] Out of memory: Killed process 1069553 (java) total-vm:19163036kB, anon-rss:14791720kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:30056kB oom_score_adj:0
[9856995.217124] oom_reaper: reaped process 1069553 (java), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
dockerd[2767]: time="2021-11-26T05:18:37.165264329Z" level=info msg="ignoring event" container=d20ddfa000acb059135d0036dd8f34a1e2f9c2579cf24032a372e704598c4f19 module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
2. docker stats 명령어로 메모리 상태를 확인한다.
$ sudo docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
123473e03cfc kye-process 0.83% 4.919GiB / 15.46GiB 31.83% 0B / 0B 162MB / 111MB 189
321da21dd82c nginx 0.00% 13.06MiB / 15.46GiB 0.08% 0B / 0B 167MB / 16.4kB 2
언제 메모리가 증가하고 해제가 안되는지 모니터링한다.
'시스템' 카테고리의 다른 글
프로세스 트리 보는 명령어 (0) | 2022.07.26 |
---|---|
[Mac] 카메라 Security & Privacy 허용 목록에서 안보일 때 (0) | 2022.01.21 |
jenkins 유저 jenkins로 변경 (0) | 2021.08.17 |
netstat 네트워크 상태 확인 명령어 (0) | 2021.06.16 |
맥북에서 파일 내 문자열 치환하기 (0) | 2021.03.19 |