Я пытаюсь запустить большой php-scipt, который запускается каждый час, если предыдущий уже закончен.
Теперь я получаю ошибки «Недостаточно памяти», и если я анализирую «top», задача sw-engine занимает много памяти, и эта память не освобождается в любое время.
Установленное Plesk Onyx версии 17.8.11 Обновление № 17 — с использованием php 7.2.9.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4626 psaadm 20 0 8838088 8.195g 17344 S 1.7 34.1 9:23.35 sw-engine
Любая идея о том, как избавиться от sw-двигателя, потребляющего все ресурсы?
Почему sw-engine потребляет ресурсы, когда я просто запускаю запланированное задание?
sw-engine
является обработчиком PHP-FPM, который используется Plesk внутри, чтобы запускать, например, сценарии Plesk UI и PHP как запланированные задачи:
# sw-engine -v
PHP 7.1.14 (cli) (built: Apr 9 2018 16:55:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
Вместо sw-engine
, вы можете использовать любую версию PHP, установленную на сервере. Например, /usr/bin/php
для PHP, предоставляемого поставщиком ОС, или /opt/plesk/php/7.2/bin/php
для PHP 7.2 поставляется с Plesk.
Для этого просто создайте запланированное задание с Run a command
введите и добавьте путь к сценарию с путем к исполняемому файлу PHP:
По вопросу ООМ, sw-engine
по умолчанию используется ограничение памяти 256 МБ:
# grep limit /usr/local/psa/admin/conf/php.ini
memory_limit = 256M
Таким образом, похоже, что предел памяти переопределен где-то в самом скрипте.
Вы можете проверить, если следующим образом:
# grep -i memory_limit /path/to/script.php
Кроме того, вы можете попробовать запустить его вручную, чтобы увидеть, как он работает с различными версиями PHP, чтобы увидеть, есть ли разница:
# /usr/bin/php /path/to/script.php
# /usr/sbin/php-fpm /path/to/script.php
# /usr/sbin/sw-engine-fpm /path/to/script.php
# /opt/plesk/php/7.2/bin/php /path/to/script.php
Других решений пока нет …