일기/Develop Note

2022-03-27 | 개발노트 Server Error kswapd0 | 04

AC 2022. 3. 27. 23:20
kswapd0

오늘 갑자기 서버가 다운이 되었다. 프로세스를 확인 해보니 CPU 과다점유로 서버가 다운이 된 것.

원인은 kswapd0 cpu 과다점유 때문이다. 이놈이 99% 정도 점유해서 서버가 뻑난 것이다. 

근본적인 원인은 잘 모르겠다. 일단 설정은 

https://kb.lc/01.how_to/kswapd0/#reference

 

How To resolve High CPU occupation from kswapd0 - LC's Linux Doc System PRD

How To resolve High CPU occupation from kswapd0 Why? kswapd0, manages virtual memory and may be having issues due to moving processes to SWAP too frequently, causing cpu spikes and decreased system performance. High CPU Usage of kswapd0 indicates insuffici

kb.lc

이 페이지를 보고 수정을 했지만. 이런다고 해결이 될 지는 지켜봐야 된다. 골 때린다.

cat /proc/sys/vm/swappiness

확인해서 0으로 설정 (설정하는 방법), (설정하는 방법2)

echo 0 > /proc/sys/vm/swappiness

/etc/sysctl.conf 기본값에는 vm.swappiness 설정이 없으므로 새로 추가해주어야 한다.[2]

vi /etc/sysctl.conf
vm.swappiness = 0

cat /sys/kernel/mm/transparent_hugepage/enabled

확인해서 always 설정 (설정하는 방법)

echo always > /sys/kernel/mm/transparent_hugepage/enabled

/etc/default/grub 설정 파일 수정
GRUB_CMDLINE_LINUX 값 끝부분에 transparent_hugepage=always 추가
# grub2-mkconfig -o /boot/grub2/grub.cfg

메모리 되찾기 (설정하는 방법)

echo 10000 > /proc/sys/vm/vfs_cache_pressure
또는
$ sysctl vm.vfs_cache_pressure=10000

영구적으로 설정하기 위해서는 /etc/sysctl.conf 파일에 아래와 같이 추가
vm.vfs_cache_pressure = 10000

스와핑 방지

echo vm.swappiness=0 | tee -a /etc/sysctl.conf

캐시 지우기

echo 1 > /proc/sys/vm/drop_caches


이렇게 설정을 다~~~~ 했는데도 해결이 안된다.

그냥 프로세스 죽이기로 했다. 프로세스를 줄이면 일시적으로 해결이 되었다. 프로세스가 다시 뜨기전까지는...


- 현재 사용중인 프로세스 찾기

ps aux

- 프로세스 찾기

ps aux | grep kswapd0

 

| 리눅스 현재 사용중인 pid를 중지하기

kill -9 PID

 


 
 
 
아무튼 최종 설정값은 다음과 같이 결정하고, /etc/sysctl.conf 파일에 추가하였다.
 
vm.swappiness=60
vm.vfs_cache_pressure=30
vm.dirty_background_ratio=10
vm.dirty_ratio=30
 
여러가지 방법으로 시도해 보았지만, kswapd0프로세스가 cpu 사용률을 100%유지하고 있는 상황을 완전히 피할 수는 없을 것으로 생각 되어진다. kswapd0 프로세스의 버그인 듯 하다. 그렇지만 위의 4개 값을 지정하고 사용하면 발생확률이 지극히 낮고, 100%를 유지하는 시간이 길지 않다(길어봐야 수초). 이 설정으로 계속 쓰기로 결정...
 
LIST

'일기 > Develop Note' 카테고리의 다른 글

STT-Translate Success  (0) 2022.08.14
Restart STT + Translate  (0) 2022.08.11
2022-03-23 | 개발노트 Moment Share | 03  (0) 2022.03.25
2022-03-23 | 개발노트 Moment Share | 02  (0) 2022.03.23
2022-03-22 | 개발노트 Moment Share | 01  (0) 2022.03.22