3

ダミーの RESTful サービスのパフォーマンス テストを行っているときに、こちらまたはこちらConnectException: Cannot assign requested addressで説明されている問題に遭遇し、チューニングの推奨事項を適用しました- エフェメラル ポートの範囲を 10000 ~ 65000 に増やしました。この優れたブログ投稿で、ビジー状態の Linux サーバーでの TCP TIME-WAIT 状態への対処ulimit -nnet.ipv4.tcp_tw_reusenet.ipv4.tcp_tw_recycle

これはまだ役に立ちませんでした。1 秒あたり最大 10,000 のリクエストをシミュレートできたので (私のテストでは各ユーザーが 1 つのリクエストしか実行しないため)、4 台以降の 8 台のクライアント マシンにスケールアウトしました。4 台のマシンでは、マシンごとに 5,000 のリクエスト/秒 (合計 20,000) を実行できましたが、8 台のマシンではそれらの 5k でさえ実行できないため、問題は別の場所にある可能性があります。

SocketOptionsそれにもかかわらず、シミュレーションまたは gatling.conf を介してガトリング接続に設定するオプションがあるかどうかを尋ねたいと思います- そこでSO_REUSEADDRを使用したいと思います。一部のオプション (接続タイムアウト) は gatling.conf で設定できますが、これは見つかりませんでした。

また、Gatling が接続を共有する方法を説明するドキュメントはありますか? 「ユーザー」が接続インスタンスを取得する大きな接続プールか、各ユーザーが自分の接続を開くダミーのいずれかを期待しますが、どこかで、ユーザーごとに接続プールがあることを読んだことがあります(接続を共有しているのは誰ですか、それとも、これらは彼の以前のリクエストで使用されたキャッシュされた接続ですか?)。

編集:したがって、解決策は最終的に簡単でした:.shareConnections設定時に使用しますScenarioBuilder.protocols(...)。コマンドライン引数として使用しようとしましたが-Dgatling.core.http.shareConnections(maven プラグインからテストを実行しています)、うまくいきませんでした。プログラマティックなアプローチでした。

4

1 に答える 1

3

そこで SO_REUSEADDR を使用したいと思います。

不可 2.2になります。

Gatling が接続を共有する方法を説明するドキュメントはありますか?

はい、ここです。デフォルトは、仮想ユーザーごとに 1 つの接続プールです。仮想ユーザーは、ブラウザーと同様に、リソースを取得するときに複数の同時接続を使用できるためです。その後、1 つの共有グローバル プールに切り替えることができます。

于 2016-01-21T14:57:23.253 に答える