Назад | Перейти на главную страницу

Debian 9 / PHP 7.1.13 - сценарии иногда не завершаются

У меня возникла странная проблема в Debian 9 с PHP 7.1.13. У нас есть несколько настроек PHP-скриптов для запуска через crontab с различными интервалами от 1 до 15 минут.

В большинстве случаев они работают нормально и успешно завершаются, однако иногда они не завершаются и остаются в памяти. Сейчас там 781, и я убрал их около 48 часов назад.

Идентичная система, работающая на Ubuntu 14.04, не имеет этой проблемы (работает на php 5.6). Я также видел проблему на своей машине разработки, на которой работает Ubuntu 17.10 и php 7, хотя я думал, что она связана с XDebug, который запускается на моей машине разработчика.

Кто-нибудь испытывал подобные проблемы с фоновыми задачами PHP7? Достаточно легко обойти это и написать сторожевой скрипт, который убивает их через установленный период, но я бы предпочел исправить проблему, а не симптом.

TIA.

На случай, если кому-то еще интересно, я так и не разобрался в этом, и в итоге просто (с небольшим толчком друга) придумал этот сценарий оболочки, который я просто периодически запускаю.

ps aexo etimes,pid,command | grep php | grep -v "pubsub" | awk '{if ($1 >= 3600) print $2}' | while read pid; do kill $pid; done

Бит grep -v "pubsub" предназначен только для того, чтобы я не убивал сервер pubsub, который вполне законно может работать в течение нескольких дней / недель без проблем. Вы можете удалить это, если у вас нет процессов для исключения

Обратите внимание, что аргумент etimes для ps не будет работать в некоторых старых дистрибутивах, если он не получит время, прошедшее с момента запуска, в секундах.