java-使用Jest的服务在线程池上阻塞,为什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用Jest的服务在线程池上阻塞,为什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1226字,纯文字阅读大概需要2分钟。
内容图文
![java-使用Jest的服务在线程池上阻塞,为什么?](/upload/InfoBanner/zyjiaocheng/678/96ce2ca6303b4bb89290f36a68aa8a57.jpg)
我有一个Java Spring应用程序,它将使用Jest客户端查询Elasticsearch(选择不佳,因为文献不多).对于150个并发连接,Elasticsearch的响应时间约为8-20毫秒,但我的应用程序可达到900 -1500毫秒.快速查看VisualVM会告诉我处理器使用率低于10%,对其进行性能分析会告诉我该应用程序执行的所有时间中有98%是等待以下方法
org.apache.http.pool.PoolEntryFuture.await()
这是Apache HttpCore的一部分,也是Jest的依赖项.对于可以在tomcat上运行的线程,我没有任何限制(最大为200,VisualVM表示实验期间的最大线程数为174).因此,它不是在等待空闲线程.
我认为延迟增加过多,并且我怀疑Jest使用的内部线程池没有足够的线程来处理所有请求……但是我不知道.
有什么想法吗?
解决方法:
I think that the latency increase is excessive and I suspect that Jest is using an internal threadpool that has not enough threads to cope with all the requests…
在快速查看源代码时,我看到您应该能够将ClientConfig注入到Jest客户端工厂中.
ClientConfig具有以下设置方法,这些设置方法似乎会影响内部Apache http客户端连接管理器:
clientConfig.maxTotalConnection(...);
clientConfig.defaultMaxTotalConnectionPerRoute(...);
clientConfig.maxTotalConnectionPerRoute(...);
也许对其中一些进行调整会给您带来更多的联系?看一下JestClientFactory source,看看它在做什么.在使用HttpClient与同一服务器建立大量连接时,过去肯定要调整这些值.
内容总结
以上是互联网集市为您收集整理的java-使用Jest的服务在线程池上阻塞,为什么?全部内容,希望文章能够帮你解决java-使用Jest的服务在线程池上阻塞,为什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。