我们使用 Netty 框架构建了一个实时系统来处理我们的 HTTP 请求。 20% 的服务调用本质上是长轮询,在大多数情况下,我们会在 55 秒后回复。
随着负载的增加,响应时间逐渐增加,在高负载情况下(建立20000个长轮询连接和10000个短轮询连接),响应时间超过5秒。
我们确认请求在 Netty 服务器级别被延迟。所有其他因素(客户端、Nginx、服务器业务逻辑)均已验证不是问题。我们甚至尝试在完全删除业务逻辑的情况下运行测试。结果还是一样。
有人可以阐明如何调整 Netty 来处理此类负载吗?
湿婆神。
最佳答案
听起来您可能尚未将这 20% 的请求的处理放在管道中的 ExecutionHandler 后面。如果是这种情况,那么您的工作线程将陷入等待状态,无法处理新请求。尽管您可以确保那些可以立即处理的请求在 ExecutionHandler 之前得到处理。
org.jboss.netty.handler.execution.ExecutionHandler
关于java - 高负载下 Netty 服务器中的请求花费更长的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10225143/