Увеличение дескрипторов (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