Jest クライアントを使用して ElasticSearch をクエリする Java + Spring アプリがあります (文書化が不十分なため、選択が不適切です)。ElasticSearch の応答時間は、150 の同時接続で約 8 ~ 20 ミリ秒ですが、私のアプリは最大 900 ~ 1500 ミリ秒になります。VisualVM をざっと見てみると、プロセッサの使用率が 10% 未満であり、プロファイリングすると、アプリが実行する時間の 98% は次のメソッドを待機していることがわかります。
org.apache.http.pool.PoolEntryFuture.await()
これは Apache HttpCore の一部であり、Jest の依存関係です。Tomcat で実行できるスレッドに関して制限はありません (最大は 200 で、VisualVM によると、実験中のスレッドの最大数は 174 でした)。したがって、空きスレッドを待っていません。
レイテンシーの増加が大きすぎると思います。Jest がすべての要求に対処するのに十分なスレッドを持たない内部スレッドプールを使用していると思われますが、わかりません。
考え?