免責事項: この記事には、サードパーティ製品に関する情報が含まれている場合があります。 そのような情報は参照だけのためです。 Alibaba Cloudは、明示または黙示を問わず、サードパーティ製品のパフォーマンスと信頼性、および製品に対する操作の潜在的な影響に関して、いかなる保証も行いません。
質問
SLBインスタンスのIPアドレスへのアクセスがタイムアウトしました。
原因
考えられる問題の原因は次のとおりです。
SLBインスタンスのエンドポイントは、ブラックホールやトラフィックスクラブなどのセキュリティリスクによって保護されています。 詳細については、「トラフィックブラックホールとトラフィックスクラブ」および「WAF保護」をご参照ください。
クライアントポートが不足していると、特にストレステスト中に接続障害が発生する可能性があります。 SLBはデフォルトでTCP接続の
timestamp
属性を消去します。 その結果、Linuxプロトコルスタックのtw_reuse (time_wait状態のポートの再利用) が機能せず、time_wait状態の接続が蓄積され、クライアントポートが不足し、最終的にアクセスタイムアウトになります。バックエンドサーバーの受け入れキューがいっぱいの場合、バックエンドサーバーはsyn_ackパケットを返さず、クライアントはタイムアウトします。
一部のアプリケーションは、接続タイムアウトRSTパケットを適切に処理しない場合があります。 SLB TCP接続が確立された後、接続が900秒間非アクティブである場合、SLBはRSTパケットをクライアントとサーバーに双方向に送信して接続を終了します。 RST例外を適切に処理しないアプリケーションの場合、システムはデータを閉じた接続に再び送信し、アプリケーションをタイムアウトさせることがあります。
バックエンドサーバーがレイヤー4 SLBインスタンスのIPアドレスにアクセスすると、接続が失敗します。 一般的なシナリオは、バックエンドアプリケーションがURL連結を使用してアクセスをリダイレクトすることです。
回答
以下の点にご注意ください。
インスタンス設定やデータの変更など、リスクを引き起こす可能性のある操作を実行する前に、データのセキュリティを確保するために、インスタンスのディザスタリカバリ機能とフォールトトレランス機能を確認することを推奨します。
ECS (Elastic Compute Service) およびRDS (Relational Database Service) インスタンスを含むインスタンスの設定およびデータを変更できます。 変更前に、スナップショットを作成するか、RDSログバックアップを有効にすることを推奨します。
Alibaba Cloud管理コンソールでログインアカウントやパスワードなどの機密情報を承認または送信した場合は、そのような情報をタイムリーに変更することを推奨します。
問題を解決するには、次のソリューションを使用します。
SLBインスタンスのIPアドレスはセキュリティ保護されています。 Anti-DDoSコンソールにログインして、SLBインスタンスのステータスを確認します。 詳細については、「asset Center」をご参照ください。
不十分なクライアントポートクライアントは、短期間の接続の代わりに永続的な接続を使用する。 RSTパケットを使用して接続を切断し、FINパケットを使用する代わりに、ソケットの
SO_LINGER
属性を設定します。バックエンドサーバーの受け入れキューがいっぱいです。 デフォルトの
net.core.somaxconn
のバックエンドサーバーの値が128の場合、次のコマンドを参照してパラメーターの値を変更し、バックエンドサーバーアプリケーションで再起動します。sysctl -w net.core.somaxconn=1024
説明注意: このドキュメントは推奨のみです。 ビジネス要件に基づいてドキュメントを変更できます。 事前にスナップショットを作成するか、関連するデータファイルをバックアップすることを推奨します。
一部のアプリケーションでは、接続タイムアウトRSTパケットが適切に処理されない。 クライアントプログラムを最適化し、使用済みの接続を速やかに閉じることを推奨します。
バックエンドサーバーがレイヤー4 SLBインスタンスのIPアドレスにアクセスすると、接続が失敗します。 代わりに、レイヤー7のHTTPリスナーまたはHTTPSリスナーを使用することを推奨します。
適用範囲
SLB