Sobes.tech
Junior — Middle

Wat te doen als het aantal actieve verbindingen met nginx meer dan 1024 is en de service niet meer stabiel werkt?

sobes.tech AI

Antwoord van AI

Если количество активных соединений с nginx превышает 1024 и сервис начинает работать нестабильно, скорее всего, достигнут лимит открытых файловых дескрипторов или лимит на количество соединений в системе.

Что делать:

  1. Увеличить лимит открытых файлов (ulimit):

    • Проверьте текущий лимит командой ulimit -n.
    • Увеличьте лимит в конфигурации системы (/etc/security/limits.conf) и для процесса nginx.
  2. Настроить параметры nginx:

    • В конфиге nginx увеличить worker_connections (например, до 4096 или выше).
    • Убедиться, что worker_rlimit_nofile установлен достаточно высоко.
  3. Проверить системные лимиты:

    • Параметры ядра, такие как fs.file-max (максимальное количество открытых файлов в системе).
    • Настроить sysctl, если нужно.
  4. Оптимизировать конфигурацию nginx:

    • Использовать keepalive соединения с разумными таймаутами.
    • Включить event-модель (например, epoll на Linux).
  5. Мониторинг и масштабирование:

    • Если нагрузка постоянно высокая, рассмотреть горизонтальное масштабирование (балансировщики, несколько инстансов nginx).

Пример увеличения лимитов в конфиге nginx:

worker_rlimit_nofile 65535;
events {
    worker_connections 4096;
}

И в системе (например, в /etc/security/limits.conf):

nginx soft nofile 65535
nginx hard nofile 65535

После изменений перезапустите nginx и проверьте состояние.