サービスエンドポイントのストレステストを行い、httpPOSTリクエストを作成したいと思います。
ソリューションで次のいずれかを実行できるようにしたい:
- 100Kなど、特定の数のリクエストを行います
- x分間実行し続ける
これまでのところ、次のようなexecutorserviceを使用してソリューションを作成しました。
int MAX_THREADS = 20;
int MAX_REQUESTS = 1000;
ExecutorService es = Executors.newFixedThreadPool(MAX_THREADS);
for(int x = 0; x < MAX_REQUESTS; x++) {
es.execute(new MyTask());
}
es.shutdown();
try {
es.awaitTermination(..);
}
catch(...) {
}
MyTaskがRunnableを実装し、HttpClient(apache)を使用してHttpPostを作成する場合。
したがって、これによりスレッドのセットプールが作成され、タスクがx回呼び出されます。
これを変更して、指定した分数も実行できるようにするにはどうすればよいですか?
開始/終了時間の統計を取得するには、futuresを使用する必要があるため、各スレッドを使用して、正しく実行するのにかかった時間を返しますか?
また、実行可能なタスクでは、HttpClientオブジェクトの新しいインスタンスを作成し、投稿とともに送信するファイルをロードしています。これによりベンチマークが遅くなると思いますが、リクエストを行うための実際の呼び出しを除いて、すべてのセットアップでhttpclientを再利用する方法はありますか?
誰かがそれを言及する前に、私はすでにこれを行うjmeterなどのツールがあることを知っていますが、これがどのように機能するかを学びたいと思います。