서버 상태가 응답없음으로 확인되는 원인은 다양하나 내부 자원 부족인 경우가 많습니다. 다량의 패킷이 오고가는 과정에서 DISK IO가 발생하거나 CPU/MEM의 사용율이 높아 더이상의 TASK 처리가 불가능한 경우가 많으므로 터미널 접근 조차 불가능한 경우 재부팅을 시도하는것이 빠른 해결에 도움이 될 수 있습니다.
서비스 사용현황 [서버상태]의 서버원격관리 버튼을 통해 강제 재부팅 처리가 가능하며, 재부팅 이후 터미널 접근등을 통해 자원 체크를 하여 동일 문제가 발생하지 않도록 체크하는것이 필요합니다.
리눅스 OS 기반 가상서버 서비스중 OOM ( out of memory ) 가 발생하였을시 확인하는 방법을 예로 알려드리며, CPU, MEMORY, DISK, TRAFFIC 등 OS 운용에 영향을 주는 요인을 직접 체크해 주시기 바랍니다.
- 재부팅후 서버에 접속 했다면 커널로그를 확인합니다.
% 로그위치
centos : /var/log/messages
ubuntu : /var/log/syslog - 메모리가 부족할경우 다음과 같이 Out of memory 에러를 확인할수 있습니다.
kernel: [15660140.493822] lowmem_reserve[]: 0 0 0 0
kernel: [15660140.493828] Node 0 DMA: 498*4kB 1*8kB 2*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2032kB
kernel: [15660140.493855] Node 0 DMA32: 641*4kB 7*8kB 3*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2668kB
kernel: [15660140.493868] 8547 total pagecache pages
kernel: [15660140.493870] 8467 pages in swap cache
kernel: [15660140.493887] Swap cache stats: add 222678644, delete 222670177, find 31883471/54800480
kernel: [15660140.493890] Free swap = 0kB
kernel: [15660140.493892] Total swap = 3293180kB
kernel: [15660140.580384] 131053 pages RAM
kernel: [15660140.580389] 5487 pages reserved
kernel: [15660140.580392] 3390 pages shared
kernel: [15660140.580420] 123444 pages non-shared
kernel: [15660140.587294] Out of memory: Kill process 930 (mysqld) score 11 or sacrifice child
kernel: [15660140.686610] Killed process 930 (mysqld) total-vm:2916460kB, anon-rss:2064kB, file-rss:0kB
kernel: [15660281.037945] init: mysql main process (930) killed by KILL signal
kernel: [15660282.134389] init: mysql main process ended, respawning
Out of memory 가 발생될경우 이용 하시는 서버에 실행중인 프로세스가 오동작 하거나 중지 되기 때문에커널패닉의 원인이 되며, 원격 접속이 안되거나 웹사이트가 접속이 안될수 있습니다. - Out of memory 로 커널패닉이 발생되었을때 자동으로 재부팅 하게 하려면 다음 설정이 필요합니다.
# vi /etc/sysctl.conf // 파일을 편집하여 다음 설정을 입력 합니다.
vm.panic_on_oom=1
kernel.panic=5 - 입력이 완료되었다면 서버를 재부팅을 하고 잘 설정이 되었는지 확인해 봅니다.
다음과 같이 명령어를 입력하여 결과를 확인해주시면 됩니다.
# sysctl -a | grep vm.panic_on_oom
vm.panic_on_oom = 1
# sysctl -a | grep kernel.panic
kernel.panic = 5
% 메모리가 부족한 이유 확인
정상적으로 사용중인 서버의 사용량이 많아 메모리가 부족한 경우도 있지만 대부분 이상 접속이나 프로세스 오동작에 의해 발생이 됩니다. 가장 많이 발생되는 문제들이오니 하나씩 확인이 필요합니다.
어떤 서비스를 운영하시는지에 따라 다각도로 확인이 필요하며 기본적으로 cpu / mem / disk의 사용율에 주기적 확인이 필요합니다.
- 웹 서비스 확인
웹 서버로 사용 하신다면 웹서버의 로그를 확인해 이상 접속 아이피가 없는지 확인 합니다.
만약 이상접속 아이피가 있다면 어떤 국가의 아이피인지 확인해봅니다. (아이피 조회)
이상 접속 아이피는 방화벽에서 차단 하는 등의 제한이 필요합니다.
또한 워드프레스나 XE 같은 공개 솔루션을 사용 하신다면 최신 버전으로 보안 패치를 해주시기 바랍니다. - 메일 서비스 확인
메일 서버를 사용 하신다면 open relay 되어 메일 서비스가 악용 되지 않는지 확인해보시기 바랍니다. 메일로그를 통해 악의적인 인증시도나 대량 스팸 메일 발송등의 이력이 있는지 확인 합니다. - ssh, ftp 서비스 확인
무차별 패스워드 대입공격이 없는지 확인해봅니다. 악의적 접근이 확인된다면 fail2ban 설치 및 제한을 하시는것이 좋습니다.-
접속 로그 위치
centos : /var/log/secure
ubuntu : /var/log/auth
-