すべてのプロダクト
Search
ドキュメントセンター

:SLBインスタンスでストレステストのリクエストがタイムアウトしました

最終更新日:Sep 19, 2024

説明

免責事項: この記事には、サードパーティ製品に関する情報が含まれる場合があります。 そのような情報は参照だけのためです。 Alibaba Cloudは、明示または黙示を問わず、サードパーティ製品のパフォーマンスと信頼性、および製品に対する操作の潜在的な影響に関して、いかなる保証も行いません。

質問

SLBインスタンスはストレステストの対象です。 504ステータスコードまたはリクエストがタイムアウトしました。 ストレステストのURLは、ヘルスチェックが有効になっていないURL転送ルールで構成されています。

原因

  1. ログサービスでSLBインスタンスログを表示すると、504ステータスコードがほとんどのリクエストで発生することがわかります。 ただし、upstream_response_timeの値は非常に規則的であり、応答時間は同時に5秒です。 これは、SLBとバックエンドサーバー間のTCP 3ウェイハンドシェイクが失敗し、504ステータスコードがタイムアウトした場合です。

    説明

    注意: ログを表示するには、ログサービスを有効にする必要があります。

  2. バックエンドサーバーにログインします。 Nginxログの内容は正常ですが、メッセージログに「nf_conntrack: table full, dropping packet」エラーが存在することを確認します。 この情報は、Linuxがカーネルネットワークスタックを通過するデータパケットごとに新しい接続エントリを生成するためです。 サーバが多くの接続を処理する場合、接続追跡テーブルは新しい接続エントリを記録することができず、サーバは新しい接続データパケットを破棄する。 したがって、SLBインスタンスとバックエンドサーバーTCP間の3方向ハンドシェイクが失敗し、504ステータスコードが発生します。

回答

  1. nf_conntrackパラメーターを次のように調整することを推奨します。 このパラメーターを実際の値に置き換えます。

    説明

    : このメソッドでは、パラメーターを一時的に変更できます。 インスタンスを再起動すると、設定は有効になりません。

    sysctl -w net.netfilter.nf_conntrack_max=1048576
    sysctl -w net.netfilter.nf_conntrack_buckets=262144
    sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=3600

  2. ストレステストが正常であることを確認します。

適用範囲

  • SLB