서버가 자꾸 응답없음 상태로 보이는 경우 어떻게 하나요?
💡 요약 정리
- 접속이 불가능하다면 먼저 서버를 재부팅해 접속을 복구하세요. 재부팅 방법은 아래 링크를 참고하세요.
- 접속 후 커널 로그에서 Out of memory(메모리 부족) 발생 여부를 확인합니다.
- OOM이 있었다면 vm.panic_on_oom=1, kernel.panic=5를 설정해 OOM 시 자동 재부팅되게 합니다.
- 웹/메일/SSH/FTP 이상 접속 및 오동작 프로세스를 점검하고 필요 시 서비스 상향을 검토합니다.
- 로그 위치: CentOS는 /var/log/messages, Ubuntu는 /var/log/syslog입니다.
1. 접속 불가일 때 우선 조치
- 서버가 지속적으로 응답 없음으로 바뀌고 접속이 되지 않으면 먼저 재부팅합니다.
- 재부팅 방법은 아래 링크를 참고하세요.
2. 커널 로그에서 메모리 부족(OOM) 확인
-
재부팅 후 서버에 접속했다면 커널 로그를 확인합니다.
- 로그 위치
- 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가 발생하면 실행 중인 프로세스가 종료되거나 오동작하여 커널 패닉의 원인이 되고, 원격 접속 및 웹사이트 접속이 불가해질 수 있습니다.
3. Out of memory 발생 시 자동 재부팅 설정
- OOM으로 커널 패닉이 발생했을 때 자동 재부팅하도록 설정합니다.
① 설정 파일 편집
아래 명령으로 설정 파일을 엽니다.
# 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
4. 메모리 부족의 원인 점검 가이드
정상적인 고부하로 메모리가 부족할 수도 있지만, 대부분은 이상 접속이나 프로세스 오동작으로 발생합니다. 아래 항목을 하나씩 점검하세요.
-
웹 서비스 점검
- 웹서버 로그에서 이상 접속 IP가 있는지 확인합니다.
- 의심 IP의 국가를 확인해 차단 정책을 세웁니다.
- 이상 접속 IP는 방화벽에서 차단하세요.
- 워드프레스, XE 등 공개 솔루션을 사용 중이면 반드시 최신 버전 으로 업데이트하여 보안 패치를 적용합니다.
-
메일 서비스 점검
- 메일 서버가 open relay로 악용되지 않는지 확인합니다.
- 메일 로그 위치: /var/log/maillog
- 메일 서버 설정에서 인증된 사용자나 허용된 IP에서만 발송되도록 구성하세요.
-
SSH, FTP 서비스 점검
- 무차별 패스워드 대입 공격(Brute-force)이 있는지 로그인 실패 로그를 확인합니다.
- 접속 로그 위치
- CentOS: /var/log/secure
- Ubuntu: /var/log/auth
- 이상 접속이 있다면 fail2ban 등을 설치해 자동 차단을 적용하세요.
-
서비스 사양 업그레이드 검토
- 실제 사용 중인 서비스(웹/DB 등)의 메모리 사용량이 높다면 상위 상품으로 업그레이드하세요.
- 바로가기 : 변경신청