PHP7 FPM отказывается запускаться

Вопрос или проблема

На моем сервере 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 на всех ваших сайтах. Ниже представлены основные причины возникновения этой проблемы и возможные решения.

Возможные причины

  1. Типовые ограничения системы:

    • Ошибка fork() failed часто возникает из-за того, что система достигла предела на количество процессов или потоков, которые могут быть созданы в системе. На системах, использующих systemd, существует параметр TasksMax, который ограничивает максимальное количество задач для услуг, управляемых systemd.
  2. Проблемы с конфигурацией PHP-FPM:

    • Конфигурация пула PHP-FPM может быть настроена так, что число дочерних процессов (children) ограничено значениями, которые вы превысили.
  3. Недостаток ресурсов:

    • Если сервер испытывает нехватку оперативной памяти (RAM) или других ресурсов, это также может привести к проблеме с тапшиной.
  4. Конфликт модулей или версия PHP:

    • Использование сторонних репозиториев, таких как ondrej, может иногда приводить к конфликтам между версиями или модулями PHP и другими установленными компонентами.

Решения

Вот несколько шагов, которые вы можете предпринять для решения проблемы:

  1. Увеличение значения TasksMax:

    • Если вы используете systemd, выполните команду для редактирования службы PHP-FPM:
      systemctl edit php7.0-fpm
    • Введите следующие строки:
      [Service]
      TasksMax=infinity
    • После внесения изменений перезагрузите демона systemd и перезапустите PHP-FPM:
      systemctl daemon-reload
      systemctl restart php7.0-fpm
  2. Проверка конфигурации 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 соответствуют возможностям вашего сервера.
  3. Мониторинг ресурсов:

    • Используйте команды вроде top, htop или free -m, чтобы проверить использование памяти и загрузку процессора на вашем сервере. Если RAM и CPU перегружены, может потребоваться увеличить ресурсы вашего сервера.
  4. Переустановка 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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...