DEV WIKI
백엔드 · 체크리스트

서버 오류 원인 구간 확인

서버가 5xx 오류나 빈 화면을 반환할 때 오류 화면·로그·적용 환경을 기준으로 원인 조사 범위를 좁혀 나가는 체크리스트입니다.

적용 범위
본문에 적힌 운영 시점과 적용 환경이 일치하는 경우
출처 확인일
2026-07-23
최종 검토
2026-07-23
수정일
2026-08-01
적용 시점
장애 대응
오류·수정 제보 (새 창에서 열림)

시작 전 확인

  • 오류가 발생한 URL, 상태 코드, 시각, 화면 또는 로그 원문을 기록합니다.
  • 변경 전 구성 파일과 최근 배포 정보를 보관합니다.

확인 항목

반환된 상태 코드가 5xx인지 확인합니다. 통과 기준은 500 등 서버 오류 응답이 관찰되어 클라이언트가 아닌 서버 측 문제로 좁혀지는 것입니다.

오류 화면의 전체 URL, 상태 코드, 발생 시각과 원문 메시지를 기록합니다. 통과 기준은 로그에서 같은 요청을 찾을 수 있는 관찰값을 확보하는 것입니다.

서버·애플리케이션 오류 로그에 해당 시각의 오류가 기록됐는지 확인합니다. 통과 기준은 요청 시각과 일치하는 오류 항목을 찾아내는 것입니다.

화면·로그·배포 정보로 적용 환경을 확인합니다. 통과 기준은 PHP, WordPress, IIS, Node.js처럼 다음 확인 문서를 고를 근거가 확보되는 것입니다.

최근 변경한 코드, 구성 파일, 의존성 중 한 항목만 되돌리거나 비활성화한 뒤 재현되는지 확인합니다. 통과 기준은 한 번에 한 요소만 바꿔 원인 구간을 좁히는 것입니다.

데이터베이스 연결과 애플리케이션 실행 자원을 각각 확인합니다. 통과 기준은 연결 실패와 실행 자원 부족 중 어느 구간인지 구분하는 것입니다.

원인으로 지목한 구간만 수정한 뒤 동일 URL을 다시 요청해 5xx가 사라졌는지 확인합니다. 통과 기준은 반복 요청에서 오류가 재현되지 않는 것입니다.

완료 판정

  • 요청 시각과 일치하는 로그 또는 환경 정보로 원인 조사 범위가 확인됩니다.
  • 동일 URL의 반복 요청에서 5xx가 다시 발생하지 않습니다.

주의사항

변경 전 확인

  • 코드, 구성, 의존성을 한 번에 여러 개 바꾸지 않습니다.
  • 원인을 확인하기 전 메모리 한도나 실행 시간을 근거 없이 크게 변경하지 않습니다.

담당자에게 전달할 내용

  • URL, 상태 코드, 발생 시각, 관련 로그, 최근 변경 내역을 서버 또는 개발 담당자에게 전달합니다.

적용 범위와 근거

서버가 5xx 응답이나 빈 화면을 반환할 때는 오류가 어느 구간에서 발생했는지부터 좁혀야 합니다. 500 Internal Server Error는 서버가 요청을 처리하지 못한 상태를 알리는 포괄(catch-all) 응답이며, 더 구체적인 5xx가 없을 때 사용됩니다. 오류 코드 자체가 원인을 알려주지 않으므로 관찰값을 나눠 확인해야 합니다.

500 응답은 서버 측 문제를 뜻하며, 방문자가 아니라 서버 운영자·관리자가 조사해야 하는 대상입니다.

구간을 나눠 확인하는 이유

500 오류의 원인은 서버 구성 오류, 메모리 부족(OOM), 처리되지 않은 예외, 파일 권한 문제 등 여러 가지가 될 수 있습니다. 원인이 하나로 정해져 있지 않으므로, 아래처럼 구간을 분리해 하나씩 배제하는 방식으로 좁혀야 합니다.

확인 구간관찰 대상기대 결과
응답HTTP 상태 코드5xx 여부로 서버 측 문제 확인
로그서버·애플리케이션 오류 로그발생 시각과 일치하는 오류 항목
적용 환경화면·로그·배포 정보환경별 문서를 고를 근거
최근 변경코드·구성 파일·의존성한 항목 변경 뒤 재현 여부
의존성데이터베이스 연결, 실행 자원연결 실패와 자원 부족 구분

원인 구간을 좁히는 절차

  • 관찰값을 먼저 고정합니다. URL, 상태 코드, 발생 시각, 오류 메시지 원문을 보관하면 같은 요청의 로그 항목을 찾을 수 있습니다.
  • 적용 환경을 확인합니다. 화면·로그·배포 정보에서 확인된 환경만 다음 문서의 분기 근거로 사용합니다. 오류 코드만으로 특정 언어·CMS·호스팅사를 추정하지 않습니다.
  • 변경은 한 항목씩 분리합니다. 코드, 구성 파일, 의존성을 동시에 바꾸지 않고 한 번에 한 항목만 바꾼 뒤 재현 여부를 확인합니다.
  • 의존성과 실행 자원을 나눠 봅니다. 데이터베이스 연결과 애플리케이션 실행 자원은 별개 구간이므로 각각의 로그·상태를 확인해 구분합니다.

주의

  • 한 번에 여러 구간을 동시에 수정하지 않습니다. 그러면 어느 변경이 오류를 해결했는지 확정할 수 없습니다.
  • 구성 파일이나 배포 파일을 편집하기 전에 원본을 보관해, 되돌릴 수 있도록 합니다.
  • 5xx가 한 번 사라졌다고 곧바로 해결됐다고 단정하지 말고, 동일 조건에서 반복 요청해 재현되지 않는지 확인합니다.
  • 원인을 확인하기 전에는 메모리 한도나 실행 시간 같은 자원 값을 근거 없이 크게 올리지 않습니다. 실제 원인을 가릴 수 있습니다.

관련 오류·증상

AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error

Apache httpd 오류 로그에 AH00124 메시지가 기록된 경우를 식별하는 문서 초안입니다.

500 errors in ASP.NET Core

IIS에서 실행되는 ASP.NET Core 애플리케이션의 500 오류를 조사할 때, 인터넷에 노출되지 않은 스테이징 또는 테스트 서버에서 Event Viewer와 Developer Exception Page를 사용하는 조건부 절차입니다.

ERR_SERVER_NOT_RUNNING

실행 중이 아닌 net.Server에 server.close()를 호출했을 때 발생하는 Node.js 오류 코드입니다.

ERR_UNKNOWN_FILE_EXTENSION

Node.js가 알 수 없거나 지원하지 않는 파일 확장자의 모듈을 로드하려 할 때 발생하는 오류 코드입니다.

500 Internal Server Error

서버가 요청을 처리하지 못했으나 더 구체적인 5xx 상태 코드를 정하지 못했을 때 반환하는 범용 HTTP 오류 응답입니다.

HRESULT: 0x800700c1

`HTTP Error 500.19 – Internal Server Error` 화면에서 `HRESULT: 0x800700c1`이 표시되면 지정된 모듈의 비트 수와 호스팅 애플리케이션 풀의 비트 수가 다르거나 모듈이 손상되었을 수 있습니다.

Fatal error: Allowed memory size of N bytes exhausted (tried to allocate N bytes)

PHP 스크립트가 memory_limit로 정해진 허용 메모리 상한을 초과해 실행이 중단될 때 표시되는 치명적 오류입니다.

Error establishing a database connection

WordPress가 사이트를 표시하는 데 필요한 데이터베이스에 연결하지 못했을 때 화면 전체에 표시되는 오류입니다.

참고 자료

MDN Web Docs · 공식 자료 (새 창에서 열림)

확인 범위: server-side-scope, possible-causes · 확인일: 2026-07-23

서버 오류 원인 구간 확인 | DEV WIKI