HTTP 또는 HTTPS 엔드포인트에 대한 IO 예외 문제를 해결하려면 어떻게 해야 하나요?

2분 분량
0

Amazon Simple Notification Service(SNS)에서 HTTP 또는 HTTPS 엔드포인트로 메시지를 보낼 때 발생하는 “IO Exception in HttpClient” 오류를 수정하고 싶습니다.

간략한 설명

Amazon SNS는 SubscriptionURL 또는 알림 메시지를 하나 이상의 HTTP 또는 HTTPS 엔드포인트에 전송합니다. 이로 인해 HTTP 또는 HTTPS 엔드포인트에 대한 ProviderResponse에서 "IO Exception in HttpClient" 오류가 발생할 수 있습니다.

오류의 일반적인 원인은 다음과 같습니다.

  • 호스트 이름이 유효하지 않거나 TCP 서버가 수신하지 않아서 연결이 실패했음을 나타내는 서버의 하위 수준 오류입니다.
  • 인터넷 연결이 끊어져 TCP 연결이 갑자기 종료되었습니다.
  • 높은 네트워크 트래픽(또는 더 낮은 대역폭)으로 인해 서버에 연결할 수 없습니다.

해결 방법

  1. "IO Exception in HttpClient"는 일반적인 오류입니다. 메시지를 수동으로 다시 전송하여 문제를 해결할 수 있습니다. 하지만 SNS 주제는 실패한 메시지에 대한 재시도 메커니즘을 제공합니다. 특정 SNS 정책에 대한 재시도 메커니즘을 설정할 때 다음 사항을 고려하세요.

    • 총 재시도 횟수는 무지연, 최소 지연 및 최대 지연 재시도의 합계보다 크거나 같아야 합니다.

      numRetries >= numNoDelayRetries + numMinDelayRetries + numMaxDelayRetries
    • 백오프 단계에서 발생한 재시도(함수 재시도) 횟수는 다음과 같습니다.

      Back off function retries = numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries
    • 최대 재시도 시간은 3600초(모든 재시도 시간의 합계)입니다. 이는 엄격한 한도이며 늘릴 수 없습니다.

      Total time for retries = Pre-backoff phase (numMinDelayRetries * minDelayTarget) + Post-backoff phase (numMaxDelayRetries * maxDelayTarget) + (Back off function retries)
  2. 서버에 들어오는 모든 요청을 수신하고 처리할 대역폭이 충분한지 확인합니다.

  3. netstat 명령을 실행하여 TCP 서버가 들어오는 모든 요청을 적극적으로 수신하는지 확인합니다. 자세한 내용은 IBM 웹사이트에서 netstat 명령을 참조하세요.

  4. 호스트 이름이 유효한지 확인합니다. 호스트 이름은 밑줄을 포함할 수 없습니다. 예를 들어 your_hostname은 허용되지 않습니다.

관련 정보

Amazon SNS 메시지 전송 재시도

AWS 공식
AWS 공식업데이트됨 9달 전