
Процесс nginx постоянно отключается, вот ошибки
2023/04/18 11:47:29 [alert] 11073#0: worker process 11312 exited on signal 9
2023/04/18 11:47:29 [alert] 11073#0: fork() failed while spawning "worker process" (12: Cannot allocate memory)
2023/04/18 11:47:29 [alert] 11073#0: could not respawn worker process
Я знаю, что у него достаточно оперативной памяти, это VPS, которым я управляю, и я увеличил его оперативную память до 4 ГБ, и все равно то же самое. Это очень легкий сервер nginx, без PHP, простая передача изображений. Работает на nginx 1.0.15, я знаю, что он старый, но он работал много лет без проблем. Ничего не менялось на этом VPS годами.
решение1
fork() failed while spawning "worker process" (12: Cannot allocate memory)
Вот в чем подсказка.
Если вы посмотрите, man 2 fork
то сможете узнать, какие условия приводят к такому положению.
ENOMEM fork()
не удалось выделить необходимые структуры ядра из-за нехватки памяти.
ENOMEM
Была сделана попытка создать дочерний процесс в пространстве имен PID, процесс "init" которого завершился. См. pid_namespaces(7).
Должно быть одно из этих двух условий. Весь VPS примерно в одно и то же время перезапускается? Если да, то вот вам ответ.
Если вы не можете сказать наверняка, вы можете проверить это, выполнив действия ps -o lstart 1
в контейнере и проверив, когда init
был запущен процесс.
В противном случае, если вы все еще получаете это, когда он говорит 'memory is tight', это может быть из-за того, что общая системная память тесна. Это не то, к чему вы можете быть причастны в вашем контейнере, поэтому вам нужно запросить дополнительную информацию у хостинг-провайдера.
решение2
На основании предоставленного вами сообщения об ошибке, похоже, что рабочий процесс завершается из-за signal 9
, что указывает на SIGKILL
сигнал. Кроме того, сообщение об ошибке предполагает, что fork() system call is failing
, что означает, что процесс не может создать новый дочерний процесс.
Сообщение об ошибке "Невозможно выделить память" предполагает, что в системе может заканчиваться память, что может приводить к сбою системного вызова fork(). Одним из возможных решений этой проблемы является увеличение объема памяти, доступной системе.
Вы можете попробовать проверить доступную память на вашем сервере с помощью команды "free -tm", которая отобразит информацию о доступной памяти и пространстве подкачки. Если в системе мало памяти, вам может потребоваться добавить больше памяти на ваш сервер или изменить конфигурацию nginx, чтобы использовать меньше памяти.
Другим возможным решением является уменьшение количества рабочих процессов в конфигурации nginx. Это можно сделать, изменив параметр "worker_processes" в файле nginx.conf. Уменьшив количество рабочих процессов, можно уменьшить использование памяти сервером nginx.