resteasy - Wildfly Resteasy 随机请求耗时较长

标签 resteasy wildfly-10

我们使用的是 Wildfly 10.1.0 和 Resteasy 3.1.1。在数百 rps 的吞吐量下,即使平均延迟非常低,我们也会看到随机的长请求。

我们正在查看 New Relic 在我们的应用程序中生成的指标。我们注意到一小部分请求(约 1%)卡在“HttpServlet30Dispatcher.service()”中,这是一个 Resteasy 库函数。对于卡在那里的请求,看起来 HttpServlet30Dispatcher(或它下面的一些代码)消耗了该请求 100% 的时间。我们发现通常需要 50 毫秒的请求会增加到 20 秒以上。

有谁知道是什么原因造成的?感觉 Wildfly 可能会阻止等待空闲线程的请求,并且可能会发生线程饥饿。任何人都可以确认或就如何分析这一点提出任何建议吗?

谢谢! 马特

最佳答案

答案是这些都是网速慢造成的。我能够通过使用 chrome 开发工具并将网络设置为下载速度非常慢来证明这一点。

发生的事情是:Wildfly 是缓冲响应的地方,因此网络速度较慢的客户端会导致此功能阻塞。

New Relic 是我们正在使用的工具,它无法过滤掉这些请求,因此它们会增加我们的总体 APDEX 分数,这很烦人。

这实际上并不表示您的代码或应用服务器配置有任何问题。请注意,发生这种情况时,慢速网络客户端会占用一个线程。我已经能够在 NodeJS 中重现完全相同的问题,我想它在其他应用程序服务器中也是一样的。我本以为 Wildfly 使用的是 NIO,它会使这个事务异步,但据我所知,这并没有发生。

IO 缓冲有很多解决方案 - 您可以使用 NGINX 或其他一些代理为您做缓冲,而您的应用服务器不必这样做。

关于resteasy - Wildfly Resteasy 随机请求耗时较长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50334205/

相关文章:

json - 没有根元素名称resteasy响应

spring-mvc - Spring Rest中@Context UriInfo的等价物是什么

jakarta-ee - DuplicateServiceException JBoss 服务器

java - RestEasy 服务对浏览器请求和 Java 客户端请求返回不同的响应

jersey - jboss 6.3.0 : decent way to remove resteasy and use jersey

java - 如何正确地对 RestEasy 响应进行单元测试?

hibernate Infinispan 2LC : query cache and entity cache in same cache region

java - 实体扫描在 JPA/hibernate/spring 应用程序中不起作用

mysql - KeyCloak 用户联盟和动态角色

java - 如何使用 JMS 和 CDI 1.2 查找 EJB