私は現在、非同期シナリオでプレイ 2.0 フレームワークを評価しています。以下のような実験をしました。
def test = Action {
val futureResponse: Future[play.libs.WS.Response] = scala.concurrent.Future {
val remoteCall = WS.url("http://127.0.0.1:8080/slowweb/SlowServlet1").get();
remoteCall.get();
}
Async {
futureResponse.map(response => Ok("Got result: " + response.getBody()))
}
}
":8080/slowweb/SlowServlet1" は、遅い Web サービス呼び出しのシミュレーションであり、戻るのに 2 秒かかります。
次に、エンドポイント「:9000/test」に対して jmeter を実行します。次の動作を確認しました。jmeter で 50 スレッドを実行すると、forkjoin プール サイズは 50 になります。jmeter で 200 スレッドを実行すると、forkjoin プール サイズは 200 になります。
スレッドプールのサイズは同時リクエストのサイズと同じです。私が期待するのは、非同期アプローチを使用する場合、スレッド プールのサイズがはるかに小さくなることです。
私は何か間違ったことをした?
ありがとう