500 Internal Server Error

 

1. 개요
2. 기타
3. 관련 문서

[image]
[image]
# [image]
유튜브에도 있다.
[image]
다음 결제창에서까지 뜬다. MS본인인증 창에서도 한번씩 뜬다

1. 개요


보통 이런 화면을 토해내면서 원하는 문서로 넘어가지 않는 현상.
사이트 자체의 에러로 원인은 다음과 같다.[1]
  1. 서버 사용량의 폭주로 인해 서비스가 일시적으로 중단된 것 또는 서버의 이상에 의한 문제.[2]
  2. 서버 스크립트의 오류.[3]
해당 홈페이지의 서버에 관리에 문제가 있어 생긴 것이니 개개인의 컴퓨터엔 문제가 없는 것으로 등장하는 500에러는 본진 서버의 이상이라고 보는 편이 옳다. 서버 데몬 에드온 중에 이런 게 있는데, 사용자 컴퓨터는 500에러 발생시 Retry-After를 받으면 또 시도하기 때문에 아예 이 코드를 빼고 '''너는 보내라 나는 씹는다''' 라고 해주는 데몬이 있다.
다만 위의 1, 2번 구분은 의미가 없다. 어쨌든 웹서버가 500 에러를 전송했다는 것은 웹서버 자체의 가용량은 남았는데 DB 등 다른 시스템이 초과되었다는 의미다. 결국은 서버 스크립트 상에서 DB 접속에 실패하여 오류가 난 것일 확률이 매우 높은데, 이 경우 1번과 2번 모두에 해당한다. 이상적인 경우는 가용량을 넘어 폭주하는 경우 DB가 접속 가능한 지 미리 확인하는 코드를 추가하거나 접속초과 오류만 특별히 컨트롤 해서 오류페이지 대신 '접속량 초과' 같은 메시지를 보내주는 게 옳다.
결국 1번이든 2번이든 오류메시지는 사용자에게 보여주지 않는 것이 가장 이상적인 상황이다. 하지만 현실적으로는 어렵다. 다만 개발자가 신이 아닌 이상 실수는 할 수 있지만 저런 오류가 사용자에게 노출되지 않도록 최대한 노력해야 하는 것은 맞다. 별로 중요한 정보는 아닐지라도 서버의 정보가 사용자에게 노출되는 것은 절대 좋은 일은 아니기 때문이다. 예를 들어 두번째 그림에 있는 오류를 보면 오류가 발생한 코드의 클래스 이름, 함수 이름 등이 다 노출되고 있다. 이를 미루어 어떤 라이브러리가 사용되었는지부터 언어가 java라는 것, 서버가 tomcat이라는 것까지 전부 노출되고 있는데 그 말은 이미 알려진 해당 라이브러리, 언어, 웹서버의 보안 취약점을 공격받을 수 있다는 것이다. 다만 저렇게 세세한 건 루프백이나 로컬 네트워크에서 접속했을때만 뜨는 것이 일반적이다.

2. 기타


나무위키에서는 외부 그림을 프록시로 불러오는 경우 원격지 서버가 응답 시간을 초과한 경우 "원격지 서버가 응답 시간을 초과했습니다."라는 메시지가 나눔고딕 폰트로 쓰인 300×200의 image/png가 나타났다.[4]
리그베다 시절부터 활동한 골수 위키러들에겐 리그베다 위키에서 자주 뜨던 에러로 기억하는 경우가 많다.

3. 관련 문서



[1] HTTP 코드 앞자리 2는 정상 접속을, 3은 페이지가 이동했음을, 4는 브라우저의 문제를, 5는 서버 오류를 뜻한다. 다만 500 외에 사용자가 많이 보게 되는 404는 '페이지가 없다'란 의미 이므로 사용자가 없는 걸 요청했을 수도 있고, 서버에 있던 게 없어진 경우에도 없는 컨텐츠를 요구한 것이라 4로 시작한다.[2] 이 경우에는 다른 오류 코드가 나온다. 대개 서버 접속량이 설정치를 넘었다거나, 아니면 NGINX 의 경우 10K 경과시 경고문구라든지 혹은 진짜 하드웨어 부하가 많이 걸릴 경우 과부하라고 출력된다.[3] 이 경우에 대부분 500 에러가 나온다.[4] 지금은 외부 이미지를 위키에 사용할 수 없어서 볼 수 없다.