У нас есть клиент, использующий стек 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.