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

ТИА.

1 ответ

Решение

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

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 не будет работать на некоторых старых дистрибутивах, без получения истекшего времени, так как запуск в секундах затруднен.

Другие вопросы по тегам