Рейтинг:0

Какое значение я должен установить, чтобы устранить ошибку «Слишком много открытых файлов» в Nginx?

флаг in

Я запускаю веб-сайты WordPress на сервере Nginx (v 1.21.6).

И недавно я увидел ошибку, как показано ниже.

07.03.2022, 19:43:41 [крит] 563445#563445: accept4() не удалось (24: Слишком много открытых файлов)
07.03.2022, 19:43:42 [крит] 563445#563445: accept4() не удалось (24: Слишком много открытых файлов)

Я перезапускаю Nginx, доступ к сайту работает нормально.

А потом я погуглил, чтобы решить эту проблему, появилось много туториалов и значений, которые меня смутили.

Информация о моей системе

ulimit -Hn
1048576
ulimit -Sn
1024

размер основного файла (блоки, -c) 0
размер сегмента данных (кбайт, -d) не ограничен
приоритет планирования (-e) 0
размер файла (блоки, -f) не ограничен
ожидающие сигналы (-i) 7581
макс. заблокированная память (кбайт, -l) 65536
максимальный размер памяти (кбайт, -m) не ограничен
открыть файлы (-n) 1024
размер канала (512 байт, -p) 8
Очереди сообщений POSIX (байты, -q) 819200
приоритет реального времени (-r) 0
размер стека (кбайт, -с) 8192
время процессора (секунды, -t) не ограничено
максимальное количество пользовательских процессов (-u) 7581
виртуальная память (кбайт, -v) не ограничена
блокировка файлов (-x) не ограничена

Затем я добавил следующие значения в /etc/sysctl.conf.

fs.file-max = 70000

Это решило все мои проблемы?

Если это не так, я хотел бы услышать совет о том, следует ли мне добавить еще один параметр.

Спасибо.

Рейтинг:0
флаг cn
Bob

Я добавил следующие значения в /etc/sysctl.conf.

fs.file-max = 70000

sysctl команда используется для изменения параметры ядра во время выполнения. Он может принимать один параметр в качестве аргумента, т.е. sysctl fs.file-max для чтения текущего значения параметра или, например, sysctl fs.file-max = 98036 чтобы установить это значение, или с помощью sysctl -p /путь/к/файлу прочитать параметры из файла.

Файл /etc/sysctl.conf (и некоторые другие) является файлом предварительной загрузки/конфигурации по умолчанию для параметров ядра.

Простое изменение этого файла не приводит к каким-либо изменениям.

Вам нужно будет либо перезагрузиться, либо запустить [судо] sysctl --система чтобы применить измененные настройки там.


ulimit команда получает/устанавливает ограничения ресурсов которые ядро ​​применяет для конкретного пользователя или процесса.


Хотя вы можете установить ограничения ресурсов с помощью ulimit которые "неограниченный" или кажутся более реалистичными, но все еще имеют значение, превышающее связанный с ним параметр ядра, этого не произойдет.

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.