Знать размер очереди ожидающих соединений в GNU / Linux - PullRequest
10 голосов
/ 27 января 2011

В типичной реализации сетевого сервера C размер очереди, ожидающей принятия, может быть установлен с помощью listen .Когда новое соединение получает доход и в очереди больше нет места, ECONNREFUSED отправляется клиенту или запрос игнорируется.

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

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

1 Ответ

8 голосов
/ 15 февраля 2011

в Linux: / Труды / системы / нетто / ipv4 / tcp_max_syn_backlog:

Максимальное количество запомненных запросов на подключение, которые еще не получили подтверждение от подключающегося клиента.

Значение по умолчанию: 1024 для систем с объемом памяти более 128 МБ и 128 для компьютеров с небольшим объемом памяти. Если сервер страдает от перегрузки, попробуйте увеличить это число.

/ Proc / системы / нетто / ядро ​​/ SOMAXCONN: Предел ожидания в сокете listen (), известный в пользовательском пространстве как SOMAXCONN. По умолчанию 128. См. Также tcp_max_syn_backlog для дополнительной настройки сокетов TCP.

это соответствующие sysctl .. на openbsd, с которым я сейчас сижу, быстрый sysctl -a показывает: net.inet.ip.maxqueue = 300

...