Увеличение дескрипторов (Ubuntu)

📈 Увеличение лимита дескрипторов (сокетов) в Ubuntu

Чтобы бот мог обрабатывать большое количество соединений (например, до 100 000 сокетов), необходимо увеличить лимит открытых файлов. В этом гайде показаны оба варианта: временное (на сессию) и постоянное (системное) увеличение лимита.


🔧 Временное увеличение лимита (на текущую сессию)

⚠️ Это изменение работает только в текущей сессии терминала и сбрасывается после перезагрузки.

✅ Шаги:

  1. Остановите бота, если он запущен.

  2. Удалите текущую screen-сессию:

    screen -X -S example-gradient-session quit
  3. Установите новый лимит файловых дескрипторов:

    ulimit -n 100000

    Замените 100000 на нужное вам значение.

  4. Создайте новую screen-сессию:

    screen -S example-bot
  5. Запустите бота:

    ./bot

💡 Примечания:

  • Значение 100000 требует примерно 1 ГБ оперативной памяти.

  • ulimit -n влияет только на текущую shell-сессию.

  • Пропуск одного из шагов может привести к тому, что лимит не применится.


🛠️ Постоянное увеличение лимита (системное)

Этот метод позволяет сохранить лимит даже после перезагрузки.

✅ Шаги:

  1. Откройте файл limits.conf:

    sudo nano /etc/security/limits.conf
  2. Добавьте строки в конец файла:

    * soft nofile 100000
    * hard nofile 100000
  3. Откройте PAM-конфиги и добавьте строку: В файлах:

    • /etc/pam.d/common-session

    • /etc/pam.d/common-session-noninteractive

    Добавьте в конец:

    session required pam_limits.so
  4. Примените изменения:

    • Перезапустите терминал или полностью перезагрузите сервер.

  5. Проверьте:

    ulimit -n

    Должно вывести новое значение (например, 100000).


✅ Итог

Увеличив лимит дескрипторов, вы:

  • Повысите устойчивость и масштабируемость бота.

  • Избежите ошибок, связанных с ограничением числа соединений.

  • Сможете безопасно обрабатывать десятки тысяч параллельных задач.

🔒 Рекомендуется для всех, кто запускает более 1000 нод

Last updated