このトピックでは、レスポンスで返されるエラーメッセージに基づいて、よく見られるD504COエラーのトラブルシューティング方法について説明します。
1. バックエンドサービスの接続に失敗しました '172.X. X.1:80へのタイムアウト接続'
原因: タイムアウトエラーにより、API Gatewayとバックエンドサービス間の接続が失敗しました。
解決策:
バックエンドサービスのURLが正しいかどうかを確認します。
バックエンドサービスがECS (Elastic Compute service) インスタンスにデプロイされている場合は、セキュリティグループの設定を確認して、アクセスが許可されているかどうかを確認します。 API Gatewayの出力IPアドレスがセキュリティグループによるアクセスを許可されていることを確認します。
バックエンドサービスにAPI Gatewayからのアクセスを拒否するアクティブなブラックリストまたはホワイトリストがあるかどうか、バックエンドアプリケーションプログラムが起動されているかどうか、およびバックエンドサーバーにAPI Gatewayからのアクセスをブロックするアクティブなファイアウォール設定があるかどうかを確認します。
バックエンドサービスが仮想プライベートクラウド (VPC) タイプであり、アクセスがリージョン間で行われる場合、またはcloud Enterprise Network (CEN) 経由でオンプレミスのデータセンターから行われる場合は、戻りルートを設定します。 詳細については、「クラウドサービスへのアクセス」をご参照ください。
2. バックエンドサービスの接続に失敗しました '接続が閉じられます'
原因: バックエンドサービスがFINパケットを送信して接続を閉じます。
解決策: このバグは2023年8月に、バックエンドサービスからFINパケットを受信すると、API Gatewayがバックエンドサーバーへの接続を再試行する再試行機能を追加することで修正されました。 8月2023日より前に専用インスタンスを購入した場合は、チケットを起票してインスタンスを更新できます。
3。 バックエンドサービスの接続に失敗しました「接続拒否」
原因: バックエンドサービスはAPI Gatewayからの接続要求を拒否します。
解決策: バックエンドサービスの原因を確認します。
4。 バックエンドサービスの接続に失敗しました「接続リースリクエストのタイムアウト」
原因: API Gatewayが接続プール内の接続リソースを使い果たしました。
解決策: API Gatewayインスタンスをアップグレードします。 インスタンスタイプの詳細については、「インスタンスタイプ」をご参照ください。
データは、HTTPを介して永続的な接続でシリアルに送信されます。 これは、送信者が次の要求を送信できる前に、前の要求が肯定応答されるのを待たなければならないことを意味する。 このルールに基づいて、API Gatewayインスタンスのアウトバウンド接続プールのサイズを計画できます。
バックエンドサービスとの接続は、アウトバウンド接続プールから割り当てられます。 api.s1.smallタイプのインスタンスを購入した場合、接続プールのサイズは1,200です。 バックエンドサービスがリクエストごとに応答するのに1秒かかると仮定すると、api.s1.smallは1秒あたり最大1,200のアウトバウンドリクエスト (RPS) をサポートします。 1秒間に1,200を超えるリクエストがバックエンドサービスに送信されると、接続プールがなくなり、過剰なリクエストは500ミリ秒間キューで待機します。 それでもリクエストの送信に失敗した場合、バックエンドサービスの接続に失敗しました。「接続リースリクエストのタイムアウト」エラーがクライアントに返されます。