Конфигурация Netty Channel для тайм-аута подключения и количества открытых подключений

Я пытаюсь реализовать HTTP-сервер с помощью netty, и я хотел знать несколько вещей, которые я не мог понять из netty api. Я прочитал много других вопросов о стеке, связанных с netty, но все же не смог udnertand.

1. Если я хочу, чтобы соединение от клиента открывалось в течение определенного периода времени, что мне следует использовать CONNECT_TIMEOUT_MILLIS или добавить обработчик тайм-аута чтения и добавить в него тайм-аут. В основном я хочу понять разницу между этими двумя. & какое значение по умолчанию для CONNECT_TIMEOUT_MILLIS.

  1. каково значение SO_BACKLOG по умолчанию, я прочитал его в одном из тех, что он равен SOMAXCONN в io.netty.netUtils. Но каково его значение. Кроме того, я хочу быть уверен, что so_backlog ограничивает количество рабочих потоков ri8 ?. Я имею в виду, что если я настрою его на 1000, это означает, что netty не будет разрешать более 1000 открытых соединений за раз.

  2. может кто-нибудь объяснить, как netty отвечает на HTTP-запрос, как внутри, с точки зрения записи и чтения из канала?

Заранее спасибо!!!


person Caesar    schedule 15.04.2014    source источник


Ответы (1)


CONNECT_TIMEOUT_MILLIS - это тайм-аут для попытки подключения. Как только соединение установлено, оно не действует. Вас интересует ReadTimeoutHandler.

По умолчанию SO_BACKLOG - NetUtils.SOMAXCONN. Он не ограничивает количество рабочих потоков. Дополнительную информацию о SO_BACKLOG см. В этом вопросе. Чтобы ограничить количество рабочих потоков, вы должны указать это при создании NioEventLoop. SO_BACKLOG также не имеет отношения к максимальному количеству одновременных подключений.

Re: Как HTTP работает в Netty - вопрос слишком широкий, чтобы дать простой ответ. Пожалуйста, используйте свой отладчик, чтобы войти во внутреннее устройство Netty и узнать, как это работает.

person trustin    schedule 16.04.2014
comment
Спасибо за ответ. Итак, что мне следует использовать, чтобы ограничить количество одновременных клиентов, подключающихся к моему серверу. Раньше я думал, что, возможно, если я ограничу количество рабочих потоков, я mi8 смогу контролировать количество одновременных подключений, но, поскольку вы говорите, что это не так. можете ли вы предложить способ ограничить максимальное количество одновременных подключений - person Caesar; 16.04.2014
comment
Я бы сказал, что SOMAXCONN - это неудачно выбранный вариант по умолчанию. Он гарантирует максимальное использование ресурсов там, где следует использовать платформу по умолчанию или Java, которые выбраны более разумно. - person user207421; 16.04.2014