2009-10-28 2 views
9

У меня есть сомнение относительно значения отставания при прослушивании системного вызова. С man-страницы прослушивания системного вызова.значение отставания при прослушивании системного вызова

Если аргумент backlog больше значения в/proc/sys/net/core/somaxconn, то он молча усечен до этого значения; значение по умолчанию в этом файле равно 128.

Это означает, что мой сервер может принимать только < 128 соединений одновременно. Что делать, если я хочу принять больше соединений> 128 ?? Могу ли я просто установить значение на возможное максимальное число, чтобы я мог получить доступ к большему количеству подключений?

ответ

8

Этот номер является только размером очереди подключения, где новые подключения ждут, когда кто-то их примет. Как только ваше приложение вызывает accept(), ожидающее соединение удаляется из этой очереди. Таким образом, вы можете определенно обрабатывать более 128 одновременных подключений, потому что они обычно проводят только короткое время в очереди.

+0

@Greg. Таким образом, значение backlog указывает только размер очереди подключения, но не число подключений, которое должно быть принято. После того, как прием выполнен, он удаляется из очереди, обеспечивая пространство для других соединений. – codingfreak

+0

Да, это правильно. –

4

Да. Используйте команду, такую ​​как

$ echo 1000 >/proc/sys/net/core/somaxconn 

Установить предел выше. См., Например, this page для получения дополнительных настроек.

+0

Это кажется довольно простым и прямым. Но увеличение значения backlog до наибольшего числа увеличивает память, выделенную для очереди прослушивания в Kernel. Есть ли что-то разумное значение, которое не увеличивает накладные расходы и обеспечивает лучшую производительность? – codingfreak

+4

Хм ... Хранение вещей обычно требует памяти. Если вам нужно большее отставание, но вы не хотите тратить память на его хранение ... Я не уверен, что вы можете сделать, я боюсь. – unwind

1

Значение отставания - это не количество максимальных подключений, это количество выдающихся соединений, то есть соединений, которые вы не принимаете(): ed.