Измерение времени, проведенного пакетом в слое Netty - PullRequest
0 голосов
/ 09 марта 2020

У нас есть клиент, использующий стек Thrift-netty для связи с сервером. Сервер обрабатывает запрос и возвращает ответ клиенту. Процессы клиента и сервера находятся на одной машине.

Наш клиент будет отправлять тысячи запросов как таковых c на сервер. И это открывает новое соединение для каждого запроса.

Мы заметили, что для многих ответов существует значительная задержка в ~ 100 мс с момента, когда сервер отправил ответ, и времени, когда на клиенте вызывается первый обработчик канала !!

Некоторые факты:

  • Мы используем NioEventL oop, а размер группы событий l oop устанавливается равным Runtime.getRuntime (). availableProcessors () * 2; на нашей машине это 160.
  • Мы установили параметры канала TCP_NODELAY = true, SO_REUSEADDR = true, SO_KEEPALIVE = true

Я добавил логирование в первом ChannelHandler channelread () logi c. И задержка в 100 мс уже произошла к тому времени.

Есть ли способ измерить время, потраченное Netty на обработку ответа, полученного на канале?

Есть ли способ отладки, которому я мог бы следовать, чтобы определить, где происходит конфликт в Netty?

Мы наблюдаем эту проблему только при большом количестве запросов / se c.

...