HTTP または HTTPS エンドポイントの IO 例外をトラブルシューティングする方法を教えてください。

所要時間1分
0

Amazon Simple Notification Service (Amazon SNS) から HTTP または HTTPS エンドポイントにメッセージを送信したときに表示される「IO Exception in HttpClient」エラーを修正したいと考えています。

簡単な説明

Amazon SNS は、サブスクリプション URL または通知メッセージを 1 つ以上の HTTP または HTTPS エンドポイントに送信します。これにより、HTTP または HTTPS エンドポイントのプロバイダーレスポンスで「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公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ