sw-engine Plesk Onyx导致内存不足错误

时间:2018-08-26 12:49:44

标签: php out-of-memory plesk plesk-onyx

我正在尝试运行一个大型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会消耗资源?

1 个答案:

答案 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可执行文件的路径即可。

enter image description here

根据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