웹사이트가 다운되었습니다. 처음 15분 동안 해야 할 일입니다.
· 읽는 데 1분
1분: 외부에서 확인
아무것도 건드리기 전에 사이트가 모든 사람에게 다운인지 나에게만 그런지 확인하세요. 내 브라우저, 네트워크, DNS 캐시는 생각보다 자주 거짓말을 합니다. 웹사이트 다운 확인 도구를 실행하세요. 중립적인 위치에서 사이트를 가져와 상태 코드, 이름 확인 여부, 인증서 유효 여부, 응답에 걸린 시간을 알려 줍니다.
- 외부에서는 정상, 나에게만 다운: 문제는 내 쪽에 있습니다. 캐시 없이 새로 고침(Ctrl+Shift+R)하고, Wi-Fi를 끈 휴대폰으로 시도하고, DNS 캐시를 비우고, VPN과 브라우저 확장 프로그램을 끄세요. 끝입니다.
- 외부에서도 다운: 계속하세요. 실패 유형마다 고유한 특징이 있으므로 결과만으로도 이미 범위가 좁혀집니다.
2분: 오류를 읽으세요, 원인이 적혀 있습니다
- “이 사이트에 연결할 수 없음”, DNS_PROBE_FINISHED_NXDOMAIN: 도메인이 확인되지 않습니다. 만료된 도메인, 누락된 레코드, 네임서버 변경. 가이드: DNS_PROBE_FINISHED_NXDOMAIN.
- ERR_CONNECTION_REFUSED: 서버는 켜져 있지만 대기 중인 웹 서버가 없습니다. 가이드: ERR_CONNECTION_REFUSED.
- 시간 초과, 아무것도 로드되지 않음: 서버가 꺼졌거나 방화벽이 모든 것을 차단합니다. 이 페이지 아래의 3번을 참조하세요.
- “연결이 비공개로 설정되어 있지 않습니다”: 인증서가 만료되었거나 잘못되었습니다. 가이드: “연결이 비공개로 설정되어 있지 않습니다”.
- 502 Bad Gateway: 웹 서버는 실행 중인데 뒤에 있는 애플리케이션은 아닙니다. 가이드: 502 Bad Gateway.
- 503 Service Unavailable: 과부하, 점검 모드 또는 호스팅 한도. 가이드: 503 Service Unavailable.
- 504 Gateway Timeout: 애플리케이션이 응답하지만 너무 느립니다. 가이드: 504 Gateway Timeout.
- 500 Internal Server Error, 흰 화면: 애플리케이션이 비정상 종료되었습니다. 플러그인, 업데이트, PHP 버전. 이 페이지 아래의 5번을 참조하세요.
3분: 무엇이 바뀌었나요?
장애에는 원인이 있고, 원인은 대개 마지막으로 바뀐 것입니다. 이 순서로 자문해 보세요. 오늘 도메인이나 인증서가 만료되었나요? 제가, 또는 자동 프로세스가 무언가(WordPress 코어, 플러그인, PHP, 운영 체제)를 업데이트했나요? DNS, 방화벽, 설정 파일을 변경했나요? 미납된 청구서가 있나요? 트래픽이 급증했나요(뉴스레터, 캠페인, 어딘가의 언급)? 이 중 짚이는 것이 있다면 거기서 시작하세요.
5분: 가능성이 높은 순서대로 다섯 가지 확인
1. 도메인과 DNS
dig +short example.com A
whois example.com | grep -iE 'expir|status'
응답이 없거나 clientHold: 도메인이 만료되었거나 레코드가 사라졌습니다. 등록 기관에서 갱신하거나 A 레코드를 다시 만드세요. 서버에서 할 수 있는 일은 없습니다.
2. 인증서
SSL 검사 도구는 만료일, 체인, 이름을 몇 초 만에 보여 줍니다. 만료되었다면 갱신하세요(sudo certbot renew && sudo systemctl reload nginx). 또는 호스팅 업체의 패널에서 다시 발급받으세요.
3. 서버가 켜져 있나요?
ping -c 3 example.com
ssh user@example.com
핑과 SSH가 모두 죽었다면 머신이 꺼졌거나, 앞단의 네트워크가 다운되었거나, 호스팅 업체에 장애가 있는 것입니다. 호스팅 업체의 상태 페이지와 클라우드 콘솔을 확인하세요(VM이 실행 중인가? 결제가 실패했나?). 멈춰 있다면 콘솔에서 재부팅하세요.
4. 웹 서버가 실행 중이고 디스크가 가득 차지 않았나요?
systemctl status nginx apache2 php8.3-fpm mysql mariadb 2>/dev/null | grep -E 'service|Active'
df -h
free -m
sudo tail -n 30 /var/log/nginx/error.log
중지된 서비스: 시작한 다음 journalctl -u SERVICE -n 50을 읽고 왜 중지되었는지 확인하세요. 가득 찬 디스크는 데이터베이스나 PHP가 중지되는 가장 흔한 원인입니다. 공간을 확보하고(sudo journalctl --vacuum-size=200M, 오래된 백업과 로그 삭제) 서비스를 다시 시작하세요. 다시 불러오기 전에는 항상 sudo nginx -t 또는 sudo apachectl configtest를 실행하세요.
5. 애플리케이션: 업데이트, 플러그인, PHP
업데이트 직후의 500이나 흰 화면은 애플리케이션이 모든 요청에서 실패하는 것입니다. PHP 오류 로그를 확인하거나 WordPress 디버깅을 잠시 켜세요.
// wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
그런 다음 wp-content/debug.log를 읽으세요. 치명적 오류에 플러그인이나 테마의 이름이 나오며, SFTP나 SSH로 해당 폴더 이름을 바꾸면(wp-content/plugins/name을 name.off로) 사이트가 돌아옵니다. WP-CLI를 사용한다면: wp plugin deactivate name. 오류에 존재하지 않는 PHP 함수가 언급된다면 PHP 버전이 바뀐 것입니다. 호스팅 업체의 패널이나 풀 설정에서 되돌리세요.
10분: 사람들에게 알리기
작업하는 동안 고객은 페이지를 계속 새로 고치고 받은편지함은 가득 찹니다. 짧고 차분한 메시지 하나로 한 시간 분량의 답변을 줄일 수 있습니다. 고객이 보는 곳에 올리세요. 상태 페이지, 소셜 프로필, 자동 응답입니다.
현재 웹사이트에 접속할 수 없습니다. 상황을 파악하고 있으며 복구 작업 중입니다. 주문과 메시지는 사라지지 않습니다. 복구되는 대로 이곳에 소식을 전하겠습니다. 기다려 주셔서 감사합니다.
모니터에서 스스로 업데이트되는 상태 페이지는 이를 미리 대신해 줍니다.
12분: 호스팅 업체의 문제인 경우
공유 호스팅에서는 위의 단계 대부분을 직접 할 수 없습니다. 외부 확인에서 다운이고, 계정에 한도가 표시되지 않고, 내 쪽에서 바뀐 것이 없다면 호스팅 업체가 조치해야 합니다. 업체가 바로 처리할 수 있는 내용을 보내세요.
안녕하세요. 제 웹사이트 example.com이 약 14:30 UTC부터 다운되었습니다. 외부 확인 결과: 연결 시간 초과(또는: 502 Bad Gateway / 인증서 만료 / 확인되지 않음). 제 계정에서는 아무것도 변경하지 않았습니다. 서버를 확인해 주시고, 복구되면 그리고 원인이 무엇이었는지 알려 주시기 바랍니다.
시각, 정확한 오류, 외부에서 확인했다는 사실을 포함하세요. 이 세 가지가 있는 문의는 한 번에 처리됩니다.
15분: 복구를 맡기고, 다음에는 먼저 알기
직접 운영하는 서버나 SSH 접근이 가능한 웹 공간이라면 위의 단계를 직접 할 필요가 없습니다. Quick Fix가 흔한 원인을 고정 가격으로 처리합니다. 설정 테스트를 통과한 후 중지된 서비스를 재시작하고, 가득 찬 디스크를 비우고, 만료된 인증서를 갱신합니다. 그것으로 부족하면 Deep Fix가 24시간 맡아 처리하며 15분 단위로 청구되고, 주문 전에 가격을 확인할 수 있습니다. 장애가 어떤 식으로 끝나든, 웹사이트 모니터링은 무료 요금제에서 5분마다 사이트를 확인하고 이메일과 앱으로 알림을 보내므로 다음에는 고객보다 먼저 알 수 있습니다.
다음 단계
다운되었나요? 당사가 대응합니다.
직접 운영하는 서버나 SSH 접근이 가능한 웹 공간에서: 흔한 원인은 고정 가격의 Quick Fix로, 나머지는 15분 단위로 청구되는 Deep Fix로 24시간 처리합니다. 주문 전에 가격을 확인할 수 있습니다.
복구 요청하기