Увеличение дескрипторов (Ubuntu)
📈 Увеличение лимита дескрипторов (сокетов) в Ubuntu
Чтобы бот мог обрабатывать большое количество соединений (например, до 100 000 сокетов), необходимо увеличить лимит открытых файлов. В этом гайде показаны оба варианта: временное (на сессию) и постоянное (системное) увеличение лимита.
🔧 Временное увеличение лимита (на текущую сессию)
⚠️ Это изменение работает только в текущей сессии терминала и сбрасывается после перезагрузки.
✅ Шаги:
Остановите бота, если он запущен.
Удалите текущую screen-сессию:
screen -X -S example-gradient-session quitУстановите новый лимит файловых дескрипторов:
ulimit -n 100000Замените
100000на нужное вам значение.Создайте новую screen-сессию:
screen -S example-botЗапустите бота:
./bot
💡 Примечания:
Значение
100000требует примерно 1 ГБ оперативной памяти.ulimit -nвлияет только на текущую shell-сессию.Пропуск одного из шагов может привести к тому, что лимит не применится.
🛠️ Постоянное увеличение лимита (системное)
Этот метод позволяет сохранить лимит даже после перезагрузки.
✅ Шаги:
Откройте файл
limits.conf:sudo nano /etc/security/limits.confДобавьте строки в конец файла:
* soft nofile 100000 * hard nofile 100000Откройте PAM-конфиги и добавьте строку: В файлах:
/etc/pam.d/common-session/etc/pam.d/common-session-noninteractive
Добавьте в конец:
session required pam_limits.soПримените изменения:
Перезапустите терминал или полностью перезагрузите сервер.
Проверьте:
ulimit -nДолжно вывести новое значение (например,
100000).
✅ Итог
Увеличив лимит дескрипторов, вы:
Повысите устойчивость и масштабируемость бота.
Избежите ошибок, связанных с ограничением числа соединений.
Сможете безопасно обрабатывать десятки тысяч параллельных задач.
🔒 Рекомендуется для всех, кто запускает более 1000 нод
Last updated