원본/네트워크 문제

원본서버

원본서버가 죽었는지 어떻게 확인할 수 있나요?

Hint

Connect Timeout 으로 추측할 뿐이지 단언할 수 없습니다.

원본서버가 죽었다면 일반적으로 다음과 같이 Connect Timeout 관련로그가 originError deprecated 에 기록됩니다.

2022-05-31 14:47:48 [ERROR] [http://test.com ] org.test.com 10.10.10.10 GET /a?1 3798 Connect-Timeout - 80
2022-05-31 14:47:48 [ERROR] [http://test.com ] org.test.com 10.10.10.10 GET /a?2 3523 Connect-Timeout - 80
2022-05-31 14:47:48 [ERROR] [http://test.com ] org.test.com 10.10.10.10 GET /a?3 3825 Connect-Timeout - 80
2022-05-31 14:47:48 [ERROR] [http://test.com ] org.test.com 10.10.10.10 GET /a?4 3884 Connect-Timeout - 80
2022-05-31 14:47:48 [ERROR] [http://test.com ] org.test.com 10.10.10.10 GET /a?5 3745 Connect-Timeout - 80
2022-05-31 14:47:48 [ERROR] [http://test.com ] org.test.com 10.10.10.10 GET /a?6 3483 Connect-Timeout - 80
2022-05-31 14:47:48 [ERROR] [http://abcd.com ] org.test.com 10.10.10.10 GET /a?7 3580 Connect-Timeout - 80

이는 증상일 뿐이지 원인은 다음 중 하나일 수 있습니다.

  • 네트워크 단절

  • 원본서버 장비오류

  • 웹서비스 프로세스 기동오류

왜 원본서버와 통신 없이 500 코드를 응답하나요?

Hint

원본서버 장애를 감지하고 배제한 것 같습니다.

장애서버로 계속 요청을 보낼 경우 장애가 더 커질 수 있어 장애감지와 복구 를 기본적으로 수행합니다. 모든 원본서버가 배제되면 원본콘텐츠를 가지고 올 서버가 없어 500 Internal Error 오류를 응답합니다. 상황은 originError deprecated 로 증명될 수 있습니다.

이 경우 조치는 2가지 방안입니다.

원본서버 응답 코드가 200 OK 인데 sc-sock-error 항목이 Server-Close 로 표시 되며 원본서버 배제가 안됩니다.

Hint

원본서버 응답 헤더에 Content-Length 또는 Transfer-Encoding 헤더가 포함 되지 않은것 같습니다.

M2 원본 로그 sc-sock-error 항목이 Server-Close 로 표시되는 경우는 어떤 상황 인가요?

Hint

원본서버 에서 명시적으로 socketclose 할때 입니다.

그 외 아래와 같은 이유로 Server-Close 상황이 발생 할 수 있습니다.

  • 원본 응답이 HTTP1.0 이며 Content-Length 가 없을때

  • M2에서 정의된 HTTP Status Code 가 아닐때

  • M2의 원본서버 세션 재 사용시간 설정 보다 원본서버 세션 재 사용시간이 작은 경우