-
사이드 프로젝트 수행기 (3)사이드 프로젝트 2022. 6. 22. 11:12
AWS 한 인스턴스에서 푸시 서버와 어드민 서버
두개를 동시에 올리고 진행해보니 어느날 다음과 같은 화면이 나오면서
서버가 내려가 있는것을 볼 수 있었다.
그러면 뭐가 문제인지 파악을 하기 위해
당연히 서버 로그를 찾아본 결과 로그에서는 아무런 기록이 없었다.
언제 다운이 된건지 에러가 났는지 나오면 쉽게 찾을텐데, 기록이 없으니
어떻게 한다? 당연히 검색을 한다.
검색을 해보니 /var/log/messages << 여기를 찾아보면 된다는 글을 발견한뒤
sudo vi /var/log/messages 로 열심히 찾았었는데,
처음에는 발견을 잘 못하다가
계속 살펴보니 다음과 같은 기록을 찾을수 있었다.
Jun 17 14:49:07 ip-172-31-42-197 kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=java,pid=18927,uid=1000 Jun 17 14:49:07 ip-172-31-42-197 kernel: Out of memory: Killed process 18927 (java) total-vm:2520844kB, anon-rss:365588kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:1088kB oom_score_adj:0 Jun 17 14:49:07 ip-172-31-42-197 kernel: oom_reaper: reaped process 18927 (java), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB Jun 17 14:49:07 ip-172-31-42-197 systemd-logind: Removed session 27563.
그래서 해당 시간에 어떤게 문제였는지
AWS 로 들어가서 확인해 보았다.
현재 실행하고 있는 인스턴스 사양은 t2.micro 로 설정되어 있었고,
사양 스펙은 vCPU 은 1, RAM(GiB) 은 1.0 로 상당히 낮은 편에 속하는 편이었다.
테스트를 위해 우선은 사양을 올리지 않고 대응해보고 사양 변경을 해보려고 생각하였다.
해당 인스턴스의 Monitoring 쪽으로 들어가서 확인해보았으나,
CPU, network, Disk 등과 같은 사항은 있었지만 메모리 관련된 내용은 찾을수가 없었고,
메모리에 대한 모니터링을 하려면 'CloudWatch 에이전트' 를 인스턴스에 설치해서 나올수 있도록 해야 한다고 한다.
종료 당시 CPU 상황은 그렇게 문제있을만 수치는 보이지 않았다.
TOP 내용:
Tasks: 100 total, 1 running, 57 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.7 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 989140 total, 72608 free, 716848 used, 199684 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 135008 avail MemOOM killer 회피
oom killer를 회피하기 위해 다음과 같은 명령어를 수행한다
$ echo -17 > /proc/<pid>/oom_adj
pid가 17037 로 확인되어
다음과 같이 수행해보니,
$ echo -17 > /proc/17037/oom_adj
다음과 같이 권한 거부 오류가 발생한다.
-bash: echo: write error: Permission denied
관리자 권한으로 수행하니 동작하는것을 확인하였다.
$ sudo bash -c "echo '-17' | tee /proc/17037/oom_adj"
이렇게 하고 대략 이틀정도 지난뒤,
다시 확인해 보니 아래 스샷에서 보이는 것처럼
pid 17037 - 어드민 서버는 살아 있는데,
푸시 서버는 해당 oom killer 를 회피하기 위한 명령어를 지정해놓지 않으니
푸시 서버가 비교적 메모리를 덜 차지한다고 해도 역시 oom killer 대상이 되어 종료 된것을 확인 할 수 있었다.
푸시 서버도 다시 기동을 시켜 준 뒤, pid 확인해서
위에서 진행했던 것처럼 명령어를 수행해 준다.
$ sudo bash -c "echo '-17' | tee /proc/7544/oom_adj"
* 출처: https://velog.io/@mbsik6082/OOMOut-Of-Memory-killer-%ED%9A%8C%ED%94%BC%ED%95%98%EA%B8%B0
'사이드 프로젝트' 카테고리의 다른 글
사이드 프로젝트 수행기 (2) (0) 2022.06.12 사이드 프로젝트 수행기 (1) (0) 2022.05.29