Как мне настроить Netty для обработки больших объемов запросов?

В нашем приложении нам нужно создать HTTP-сервер, на котором при запуске к нему открываются около 1600 постоянных HTTP-соединений с различных удаленных серверов, и поток из тысяч HTTP-запросов POST отправляется по каждому соединению в быстрой последовательности в течение примерно 30 секунд. секунд - нам требуется всего несколько миллисекунд, чтобы ответить на каждое из них. Через 30 секунд соединение закрывается и открывается другое.

Мы выбрали Netty, потому что, по мнению большинства, он хорошо подходит для создания эффективных HTTP-серверов.

При реализации нашего HTTP-сервера мы следовали Snoop пример HTTP-сервера Netty.

К сожалению, мы сталкиваемся с проблемами, которые могут быть объяснены перегрузкой Netty, и поэтому мы пересматриваем, правильно ли она настроена, в частности, в отношении того, как обрабатываются потоки. Настраиваем сервер следующим образом:

ServerBootstrap bootstrap = new ServerBootstrap(
   new NioServerSocketChannelFactory(
            Executors.newCachedThreadPool(),
            Executors.newCachedThreadPool()));

Когда мы получаем запрос, мы обрабатываем его в том же потоке, который вызывает messageReceived() в нашем SimpleChannelUpstreamHandler.

Должен ли этот подход работать в нашем приложении?

изменить: средняя нагрузка на коробку во время возникновения сбоев составляет 0,05, что очень мало. Я выделил 4 ГБ процессу Java, но он почти не использует его. Так что, в основном, коробка полностью недогружена.


person sanity    schedule 20.12.2012    source источник
comment
Можете ли вы опубликовать некоторые цифры использования процессора / оперативной памяти?   -  person uldall    schedule 21.12.2012
comment
Отвечаем на вашу просьбу, ящик не перегружен.   -  person sanity    schedule 21.12.2012
comment
Какие ошибки возникают?   -  person Enno Shioji    schedule 21.12.2012
comment
Другая служба сообщает, что она не получает наши HTTP-ответы после тайм-аута в 100 мс, но наш журнал показывает, что мы отвечаем с большим запасом времени.   -  person sanity    schedule 22.12.2012
comment
Ваш последний комментарий, кажется, указывает на проблему на стороне сети, не так ли? Достаточно ли велика полоса пропускания? На самом деле я работаю над аналогичным приложением, и я сталкиваюсь с проблемой того же типа.   -  person Pixou    schedule 23.12.2012
comment
Просто любопытно, вы пытаетесь построить сервер rtb?   -  person Ole Gooner    schedule 02.12.2015


Ответы (1)


Вы отключили Nagle, установив «child.nodelay» в своем ServerBootstrap?

(См. http://static.netty.io/3.5/api/org/jboss/netty/bootstrap/ServerBootstrap.html)

person GamingBuck    schedule 28.12.2012