Подтвердить что ты не робот

Как настроить дескрипторы сокетов?

enter image description here

Я хочу знать, кто регулирует количество дескрипторов сокета?

Кроме того, как автоматически закрыть соединение для ограниченного таймаута?

4b9b3361

Ответ 1

Похоже, вам нужно изменить максимальные открытые дескрипторы файлов в вашей системе.

Из руководства по установке RabbitMQ для систем Debian и Ubuntu, раздел Контроль системных ограничений:

В установках RabbitMQ, выполняющих производственные рабочие нагрузки, может потребоваться система ограничения и настройки параметров ядра для обработки приличного количества параллельных соединений и очередей. Основная настройка, которая необходима настройка - максимальное количество открытых файлов, также известное как ulimit -n. Значение по умолчанию для многих операционных систем слишком низкое для обмена сообщениями брокер (например, 1024 в нескольких дистрибутивах Linux). Мы рекомендуем позволяя по меньшей мере 65536 дескрипторов файлов для пользователя rabbitmq в производственных условиях. 4096 должно быть достаточно для большинства рабочей нагрузки разработки.

В игре есть два ограничения: максимальное количество открытых файлов ОС kernel позволяет (fs.file-max) и лимит пользователя (ulimit -n). прежнее должно быть выше последнего.

Самый простой способ настроить ограничение для каждого пользователя для RabbitMQ это отредактировать /etc/default/rabbitmq -server (предоставленный RabbitMQ Debian) или rabbitmq-env.conf, чтобы вызвать ulimit до служба запускается.

ulimit -S -n 4096

Этот мягкий предел не может превышать жесткий предел (по умолчанию до 4096 во многих дистрибутивах). Жесткий лимит может быть увеличен через /etc/security/limits.conf. Это также требует pam_limits.so и перезагрузитесь или перезагрузитесь.

Обратите внимание, что ограничения для использования ОС не могут быть изменены.

Для получения дополнительной информации об управлении fs.file-max с помощью sysctl, пожалуйста обратитесь к отличному руководству Riak по настройке ограничения доступа к файлам.

P.S:.

Аналогичная проблема обсуждалась в списке рассылки RabbitMQ " Увеличение ограничения файловых дескрипторов". Последнее сообщение содержит окончательную ссылку на установочный документ RabbitMQ и явно указывает на проблему с ulimit, но чтение через нее также может помочь вам справиться с вашей проблемой, в то время как весь поток охватывает проблему с ограничениями дескрипторов из разных точек.

Ответ 2

Я запускаю RabbitMQ 3.6.3 на Ubuntu 16.04 и с этими более новыми версиями ответ, данный здесь (с использованием ulimit в файле rabbitmq-server), больше не работал у меня.

Решение для меня состояло в том, чтобы настроить лимиты для systemd в этом файле

/etc/systemd/system/rabbitmq-server.service.d/override.conf

В этом файле поместите эту конфигурацию

[Service] LimitNOFILE=32768

Где 32768 - количество файлов, которые вы хотите настроить.

Если вы отредактируете этот файл напрямую, вам нужно перезагрузить конфигурацию systemd с помощью

sudo systemctl daemon-reload

Но вы также можете использовать systemctl для редактирования файла, и в этом случае он автоматически перезагружает конфигурацию

sudo systemctl edit rabbitmq-server

Ответ 3

вы можете добавить следующую строку в /etc/security/limits.conf

* soft nofile 65000
* hard nofile 65000

с этим вы устанавливаете ulimit на 65000

Ответ 4

Я заметил, что другие ответы здесь отвечают на вопрос о том, как повысить лимит дескрипторов сокетов (установка ulimit -n <value> в /etc/default/rabbitmq-server), но никто из них не ответил на ваш другой вопрос (почему 829 дескрипторов сокетов, когда дескриптор файла предел равен 1024?)

Это связано с количеством других дескрипторов файлов, которые использует RabbitMQ. В какой-то степени у вас всегда будет меньшее количество дескрипторов сокетов (из моего собственного использования это около 90-95% от предела дескриптора файла). В документации RabbitMQ содержится рекомендация о том, что вы устанавливаете лимит дескриптора файла в 1,5 раза больше количества соединений, которые вы ожидаете иметь максимум: "Настройка большого количества подключений"

Ответ 5

Решение, которое работало для меня на Ubuntu, this:

Сначала найдите правильный файл rabbitmq-server. Вы можете сделать это, выполнив locate rabbitmq-server в приглашении bash.
Затем откройте файл с помощью sudo vim /etc/default/rabbitmq-server. Это файл, который будет содержать строку ulimit -n 4096.
Если строка закомментирована с помощью #, раскомментируйте ее.
Затем добавьте EOF в качестве последней строки файла.

Теперь файл будет выглядеть следующим образом:

# This file is sourced by /etc/init.d/rabbitmq-server. Its primary
# reason for existing is to allow adjustment of system limits for the
# rabbitmq-server process.
#
# Maximum number of open file handles. This will need to be increased
# to handle many simultaneous connections. Refer to the system
# documentation for ulimit (in man bash) for more information.
#
ulimit -n 4096
EOF

Теперь вам нужно перезапустить rabbitmq. Не перезагружайте операционную систему. Найдите файл rabbitmqctl и запустите:
sudo /usr/sbin/rabbitmqctl stop
Затем снова запустите rabbitmq либо с помощью sudo /usr/sbin/rabbitmqctl start &.

Что это. Теперь перейдите в интерфейс браузера RabbitMQ, и вы увидите, что количество сокетов увеличилось.