如何调试Netty和Akka默认分派器之间的延迟

时间:2019-06-06 13:49:05

标签: playframework netty forkjoinpool

从Netty收到请求到Akka的调度员开始执行Controller的动作之间,我面临着很大的延迟(30-90秒)。

我正在使用Play 2.5.2。 Netty正在使用默认配置运行。 Akka的默认调度程序在4核计算机上配置了具有12个线程的fork-join-executor。

在线程转储中,我能够看到几乎10/12个线程处于WAITING(驻留)状态,而其他线程处于TIMED_WAITING(驻留)状态。

这导致服务器上的客户端超时过多。

计算机的CPU利用率约为30-40%。我认为免费的fork-join-executor应该立即从Netty中选择消息。

以下是netty和Play记录器的日志:

Netty Wire:

2019-06-06 13:10:46.141 +0000 [id:0xb2584eca,L:/10.140.0.22:9000-R:/ XXXX:X]接收:DefaultHttpRequest(decodeResult:成功,版本:HTTP / 1.1)

Play的记录器:

2019-06-06 13:11:19,550 [INFO]来自application-akka.actor.default-dispatcher-10中的应用程序

application.conf:
akka.actor.default-dispatcher.fork-join-executor{
    parallelism-factor = 3.0
    parallelism-max = 64
    parallelism-min = 8
    task-peeking-mode = LIFO
}

这里延迟的可能原因是什么?我希望这里的延迟会接近0。

谢谢

0 个答案:

没有答案