본문으로 건너뛰기

서버가 자꾸 응답없음 상태로 보이는 경우 어떻게 하나요?

💡 요약 정리

  • 접속이 불가능하다면 먼저 서버를 재부팅해 접속을 복구하세요. 재부팅 방법은 아래 링크를 참고하세요.
  • 접속 후 커널 로그에서 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. 메모리 부족의 원인 점검 가이드

정상적인 고부하로 메모리가 부족할 수도 있지만, 대부분은 이상 접속이나 프로세스 오동작으로 발생합니다. 아래 항목을 하나씩 점검하세요.

  1. 웹 서비스 점검

    • 웹서버 로그에서 이상 접속 IP가 있는지 확인합니다.
    • 의심 IP의 국가를 확인해 차단 정책을 세웁니다.
    • 이상 접속 IP는 방화벽에서 차단하세요.
    • 워드프레스, XE 등 공개 솔루션을 사용 중이면 반드시 최신 버전으로 업데이트하여 보안 패치를 적용합니다.
  2. 메일 서비스 점검

    • 메일 서버가 open relay로 악용되지 않는지 확인합니다.
    • 메일 로그 위치: /var/log/maillog
    • 메일 서버 설정에서 인증된 사용자나 허용된 IP에서만 발송되도록 구성하세요.
  3. SSH, FTP 서비스 점검

    • 무차별 패스워드 대입 공격(Brute-force)이 있는지 로그인 실패 로그를 확인합니다.
    • 접속 로그 위치
      • CentOS: /var/log/secure
      • Ubuntu: /var/log/auth
    • 이상 접속이 있다면 fail2ban 등을 설치해 자동 차단을 적용하세요.
  4. 서비스 사양 업그레이드 검토

    • 실제 사용 중인 서비스(웹/DB 등)의 메모리 사용량이 높다면 상위 상품으로 업그레이드하세요.
    • 바로가기 : 변경신청