我正在尝试运行一个大型php-scipt,如果之前的一个已经完成,则每小时开始。
现在,我遇到了内存不足错误,如果我分析“ top”,则sw-engine任务会消耗大量内存,并且此内存不会随时释放。 已安装Plesk Onyx版本17.8.11更新#17-使用php 7.2.9。
In [130]: {idx: *(x for x in range(5)), for idx in range(5)}
File "<ipython-input-130-3e9a3eee879c>", line 1
{idx: *(x for x in range(5)), for idx in range(5)}
^
SyntaxError: invalid syntax
关于如何摆脱使用所有资源的sw-engine的任何想法?
为什么我仅启动预定任务时sw-engine会消耗资源?
答案 0 :(得分:0)
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
用于操作系统供应商提供的PHP,或者/opt/plesk/php/7.2/bin/php
用于Plesk附带的PHP 7.2。
为此,只需创建一个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