我有一个 Java + Spring 应用程序,它将使用 Jest 客户端查询 ElasticSearch(选择不好,因为它的文档很差)。ElasticSearch 的响应时间约为 8-20 毫秒,有 150 个并发连接,但我的应用程序高达 900 -1500 毫秒。快速浏览一下 VisualVM 告诉我处理器使用率低于 10%,分析它告诉我应用程序在 98% 的时间里都在等待以下方法
org.apache.http.pool.PoolEntryFuture.await()
这是 Apache HttpCore 的一部分,也是 Jest 的依赖项。我对可以在 tomcat 上运行的线程没有限制(最大为 200,VisualVM 表示实验期间的最大线程数为 174)。所以它不是在等待空闲线程。
我认为延迟增加过多,我怀疑 Jest 使用的内部线程池没有足够的线程来处理所有请求,但我不知道。
想法?