ストレステストを経験されたお客様のご意見に基づき、ストレステストのパフォーマンスでよくあるトラブルをまとめました。トラブルシューティングのソリューションをご提供するとともに、ストレステストにおける推奨事項についても記載します。
ストレステストに関するよくあるご質問
バックエンドホストでパブリックネットワークトラフィックが有効になっていない
CVMの購入の際にパブリックネットワークトラフィックを有効にしていない場合、このホストがパブリックネットワークCLBをマウントする際に転送できない状況が発生します。
バックエンドホストに十分な帯域幅が設定されていない
バックエンドホストに設定した帯域幅が小さすぎる場合、帯域幅が設定した閾値を超えると、バックエンドサーバーがパケットをCLBに返せなくなり、CLBの処理の際に504、502がクライアントに返されます。
クライアントのポート不足
ポートの数が少なすぎる、あるいはクライアントのポート範囲の設定が狭すぎる場合、クライアントのポート不足のために接続の確立に失敗します。また、長時間接続の確立の際にkeep_aliveフィールドを0より大きくすると、接続がポートを占有し続けるため、クライアントのポート不足が起こります。
バックエンドサーバーの依存するアプリケーションに性能ボトルネックがある
リクエストがCLBを経由してバックエンドサーバーに到達した後、バックエンドサーバー自体の負荷は正常であっても、バックエンドサーバー上のすべてのアプリケーションがデータベースなどの他のアプリケーションに依存している場合、データベースに性能ボトルネックが生じると、ストレステストのパフォーマンスにも影響します。
バックエンドサーバーのヘルスステータスの異常
ストレステストの際はバックエンドサーバーのヘルスステータスが無視されがちです。バックエンドサーバーのヘルスチェックが失敗した場合、またはヘルスチェックのステータスが反復的な(正常になったり異常になったりの変化を繰り返す)場合も、それによってストレステストのパフォーマンス低下がみられる場合があります。
CLBがセッション維持を有効にしている場合に、バックエンドホストのトラフィック分配がアンバランスになる
CLBがセッション維持を有効にしていると、リクエストが数台の決まったバックエンドサーバーに転送されやすくなり、トラフィックの分配がアンバランスになることでパフォーマンステストに影響が生じます。ストレステストの際はセッション維持を無効化することをお勧めします。
ストレステストに関する推奨事項
ご注意:
次の設定はCLB機能のストレステストのみに用いられるものです。ユーザーの本番環境でもこの設定が必要という意味ではありません。
CLBの転送機能のストレステストの際は、短時間接続の使用をお勧めします。
通常、セッション維持などの機能を検証する場合を除き、ストレステストは主にCLBの転送機能を検証するために行います。そのため、CLBおよびバックエンドサーバーの処理能力のテストには短時間接続を使用することが可能です。
CLBスループットのストレステストの際は長時間接続を使用し、帯域幅上限、長時間接続型の業務などのテストを行うことをお勧めします。
この場合はストレステストツールのタイムアウト時間を小さい閾値に調整することをお勧めします。タイムアウト時間が長すぎると平均応答時間が長くなり、ストレステストレベルに達したかどうかの判断を速やかに行うことが難しくなります。
バックエンドサーバーでストレステスト用の静的ウェブページを提供することで、アプリケーション自体のロジックによるロス(I/O、DBなど)を避けることをお勧めします。
リスナーのセッション維持機能は無効にしておかなければ、一部のバックエンドサーバーに負荷が集中してしまいます。また、ストレスパフォーマンスが基準に達しない場合は、CLB下のバックエンドホストのモニタリングデータを確認することで、トラフィックの分配が均一かどうかを判断することができます。
ヘルスチェックによるバックエンドサーバーへのアクセスリクエストを減らすため、リスナーのヘルスチェック機能は無効にしておきます。
ストレステストは複数のclient(> 5)を使用して行うと、ソースIPが分散し、実際のオンライン状況をより適切に再現できます。