Как отладить задержку между Netty и Akka Default Dispatcher - PullRequest
0 голосов
/ 06 июня 2019

Я сталкиваюсь со значительной задержкой (30-90 секунд) между временем, когда Нетти получает запрос, и временем, когда диспетчер Акки начинает выполнять действие Контроллера.

Я использую Play 2.5.2. Netty работает с настройками по умолчанию. Диспетчер Akka по умолчанию настроен на использование fork-join-executor, имеющего 12 потоков на 4-ядерном компьютере.

В дампе потоков я вижу, что почти 10/12 потоков находятся в состоянии WAITING (парковка), а остальные в состоянии TIMED_WAITING (парковка).

Это приводит к большим тайм-аутам клиентов на серверах.

Машина загружена на ~ 30-40%. Я предполагаю, что бесплатный fork-join-executor должен немедленно выбрать сообщения от Netty.

Follwing - это логи netty и логгера Play:

Netty Wire:

2019-06-06 13: 10: 46.141 +0000 [id: 0xb2584eca, L: /10.140.0.22: 9000 - R: / XXXX: X] RECEIVED: DefaultHttpRequest (decodeResult: success, version: HTTP / 1.1)

Логгер игры:

2019-06-06 13: 11: 19,550 [ИНФО] из приложения в 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 здесь.

Спасибо

...