我正在尝试运行一个大型的PHP脚本,如果之前已经完成,则每小时启动一次。
现在我出现内存不足错误,如果我分析“顶部”,则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
您可以使用服务器上安装的任何PHP版本代替sw-engine
。例如,操作系统供应商提供的/usr/bin/php
for PHP,或Plesk附带的PHP 7.2的/opt/plesk/php/7.2/bin/php
。
要做到这一点,只需使用Run a command
类型创建一个计划任务,并在脚本前面添加PHP可执行文件的路径:
根据OOM问题,sw-engine
默认使用256 MB内存限制:
# 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