WordPress DemoSite

Тестовый сайт для экспериментов и демонстраций возможностей

Лимиты файловых дескрипторов (file descriptors)

Лимиты файловых дескрипторов (file descriptors) — это ограничения, которые операционная система накладывает на количество одновременно открытых файлов, сокетов и других ресурсов для каждого процесса или пользователя. Эти лимиты важны для стабильной работы серверов, особенно тех, которые обрабатывают большое количество одновременных соединений (например, веб-серверы, такие как Nginx, или серверы приложений, такие как PHP-FPM).

Что такое файловые дескрипторы?

Файловый дескриптор — это целое число, которое операционная система использует для идентификации открытых файлов, сокетов, каналов и других ресурсов ввода-вывода. Каждое открытое соединение (например, HTTP-запрос к веб-серверу) использует файловый дескриптор.

Зачем увеличивать лимиты файловых дескрипторов?

  1. Обработка большого количества соединений:
  1. Предотвращение сбоев:
  1. Оптимизация производительности:

Как проверить текущие лимиты?

Чтобы проверить текущие лимиты файловых дескрипторов, выполните команду:

ulimit -n

Эта команда покажет максимальное количество файловых дескрипторов, которые может открыть текущий процесс. По умолчанию это значение часто равно 1024, что может быть недостаточно для высоконагруженных серверов.


Как увеличить лимиты файловых дескрипторов?

1. Временное увеличение (для текущей сессии)

Вы можете временно увеличить лимит для текущей сессии с помощью команды:

ulimit -n 65535

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

2. Постоянное увеличение (для всей системы)

Чтобы увеличить лимиты на постоянной основе, выполните следующие шаги:

a. Редактирование /etc/security/limits.conf

Откройте файл /etc/security/limits.conf и добавьте следующие строки:

* soft nofile 65535
* hard nofile 65535
b. Редактирование /etc/pam.d/common-session и /etc/pam.d/common-session-noninteractive

Добавьте следующую строку в оба файла:

session required pam_limits.so

Это гарантирует, что лимиты будут применены для всех сессий.

c. Редактирование /etc/sysctl.conf (опционально)

Для увеличения системного лимита файловых дескрипторов добавьте в файл /etc/sysctl.conf следующие строки:

fs.file-max = 2097152

Затем примените изменения:

sudo sysctl -p
d. Перезагрузка системы

После внесения изменений перезагрузите систему, чтобы изменения вступили в силу:

sudo reboot

Как проверить, что изменения применились?

После перезагрузки выполните команду:

ulimit -n

Она должна вернуть новое значение (например, 65535).

Также можно проверить системный лимит:

cat /proc/sys/fs/file-max

Пример использования в контексте Nginx и PHP-FPM

Если у вас высоконагруженный веб-сервер, увеличение лимитов файловых дескрипторов позволит:


Рекомендации:

Если вы не уверены, какое значение выбрать, начните с 65535 и при необходимости увеличьте его.

Полный стэк: .NET | AMQP | Android | api | Bash | Bootstrap | C++ | cms | Composer | css | Data | Elasticsearch | ESP32 | Git | GraphQL | Gulp | JavaScript | JetStream | Joomla | js | Kotlin | Laravel | LEMP | Linux | LMS | Markdown | MODX | Moodle | MySQL | NATS | Nginx | Node.js | OpenCart | Parsedown | PHP | Python | RabbitMQ | SCSS | SEO | Simpla | SOAP | SQL | startup | Swift | Symfony | Tailwind | Translation | Twig | Ubuntu | Unit | web3 | Webasyst | Webpack | WebSocket | WordPress | XML | Бизнес | блокчейн | ИИ | интернет-магазин | ЛК | Руководство | ТЗ | фреймворк | Яндекс.Трекер