Вопрос или проблема
На моем сервере Ubuntu 16.04 с PHP 7 FPM продолжает возникать ошибка
ERROR: fork() не удался: Ресурс временно недоступен (11)
Из-за этого ни один из моих сайтов не работает и появляется ошибка 502.
ПРИМЕЧАНИЕ: Я использую репозиторий ondrej для php7 и установил следующие модули (если это поможет…)
php7.0-fpm php7.0-cli php7.0-curl php7.0-gd php7.0-intl php7.0-mysql php7.0-json php7.0-sqlite3 php7.0-opcache php-memcached php-pear
И использую nGinx
Как я могу это исправить?
Чтобы решить мои проблемы, мне нужно было удалить php7 с сервера, убрать репозиторий ondrej и установить все из репозиториев Ubuntu.
Мои шаги:
apt-get --purge remove php7*
rm -f /etc/apt/sources.list.d/ondrej*
apt-get update && apt-get -y upgrade #просто на всякий случай
apt-get -y install php7.0-fpm php7.0-curl php7.0-gd php7.0-intl php7.0-mysql php7.0-json php7.0-sqlite3 php7.0-opcache php-memcached php-pear
Теперь все в порядке.
У меня была такая же проблема с PHP-FPM, который, похоже, “застрял” на 500 дочерних процессов и не мог создать больше из-за ошибки “Ресурс временно недоступен”.
Исходя из комментария выше от Оли, я посмотрел https://unix.stackexchange.com/a/274830/880
Это было решением для меня, связанное с предельным количеством задач, которые systemd устанавливает по умолчанию (в моем случае это было 512). Я выполнил команду “systemctl edit php-fpm” и добавил следующие строки:
[Service]
TasksMax=infinity
Затем выполнил systemctl daemon-reload
и systemctl restart php-fpm
.
Ответ или решение
Проблема: PHP7 FPM отказывается запускаться
Если вы сталкиваетесь с ошибкой «ERROR: fork() failed: Resource temporarily unavailable (11)» на вашем сервере Ubuntu 16.04 с установленным PHP 7 FPM, это может вызывать серьезные проблемы, такие как ошибка 502 на всех ваших сайтах. Ниже представлены основные причины возникновения этой проблемы и возможные решения.
Возможные причины
-
Типовые ограничения системы:
- Ошибка
fork() failed
часто возникает из-за того, что система достигла предела на количество процессов или потоков, которые могут быть созданы в системе. На системах, использующихsystemd
, существует параметрTasksMax
, который ограничивает максимальное количество задач для услуг, управляемыхsystemd
.
- Ошибка
-
Проблемы с конфигурацией PHP-FPM:
- Конфигурация пула PHP-FPM может быть настроена так, что число дочерних процессов (children) ограничено значениями, которые вы превысили.
-
Недостаток ресурсов:
- Если сервер испытывает нехватку оперативной памяти (RAM) или других ресурсов, это также может привести к проблеме с тапшиной.
-
Конфликт модулей или версия PHP:
- Использование сторонних репозиториев, таких как
ondrej
, может иногда приводить к конфликтам между версиями или модулями PHP и другими установленными компонентами.
- Использование сторонних репозиториев, таких как
Решения
Вот несколько шагов, которые вы можете предпринять для решения проблемы:
-
Увеличение значения TasksMax:
- Если вы используете
systemd
, выполните команду для редактирования службы PHP-FPM:systemctl edit php7.0-fpm
- Введите следующие строки:
[Service] TasksMax=infinity
- После внесения изменений перезагрузите демона
systemd
и перезапустите PHP-FPM:systemctl daemon-reload systemctl restart php7.0-fpm
- Если вы используете
-
Проверка конфигурации PHP-FPM:
- Проверьте файл конфигурации пула PHP-FPM, расположенный по пути
/etc/php/7.0/fpm/pool.d/www.conf
. Убедитесь, что значения параметровpm.max_children
,pm.start_servers
,pm.min_spare_servers
, иpm.max_spare_servers
соответствуют возможностям вашего сервера.
- Проверьте файл конфигурации пула PHP-FPM, расположенный по пути
-
Мониторинг ресурсов:
- Используйте команды вроде
top
,htop
илиfree -m
, чтобы проверить использование памяти и загрузку процессора на вашем сервере. Если RAM и CPU перегружены, может потребоваться увеличить ресурсы вашего сервера.
- Используйте команды вроде
-
Переустановка PHP:
- Если вышеописанные шаги не помогли, вы можете попробовать полностью удалить PHP и переустановить его из стандартного репозитория Ubuntu, убрав при этом сторонние репозитории. Выполните следующие команды:
apt-get --purge remove php7* rm -f /etc/apt/sources.list.d/ondrej* apt-get update && apt-get -y upgrade # для безопасности apt-get -y install php7.0-fpm php7.0-curl php7.0-gd php7.0-intl php7.0-mysql php7.0-json php7.0-sqlite3 php7.0-opcache php-memcached php-pear
- Если вышеописанные шаги не помогли, вы можете попробовать полностью удалить PHP и переустановить его из стандартного репозитория Ubuntu, убрав при этом сторонние репозитории. Выполните следующие команды:
Заключение
Проблемы с запуском PHP7 FPM могут быть вызваны различными факторами, включая системные ограничения, недостаток ресурсов и конфликты конфигурации. Следуя указанным шагам, вы сможете исправить ошибку и восстановить работоспособность ваших сайтов. Не забывайте периодически мониторить систему на предмет превышения лимитов, что поможет предотвратить подобные проблемы в будущем.