Ubuntu 14.04.3 LTS 上的 PHP 脚本错误‘exec():无法 fork...’

Ubuntu 14.04.3 LTS 上的 PHP 脚本错误‘exec():无法 fork...’

我正在运行 unittest 脚本,为了设置测试用例,我需要不时运行 shell 命令。因此,在 unittest 执行期间,shell 命令运行了大约 50 次。

它在 CentOS 版本 6.6(最终版)服务器上运行良好,但在 Ubuntu 14.04.3 LTS 上无法运行。

问题是,在执行大约 20 次 shell 脚本之后,我收到以下错误:

exec(): Unable to fork [$(which mysql) -u user -ppwd test_db < "/opt/jenkins/workspace/some - project/application/../tests/Application/assets/sql/test_db.sql" 2> /dev/null]

我检查了互联网上的所有主题,但没有人帮助我。我已将进程数和打开文件数限制增加到很大的值

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 3885
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 100000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 6553500
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

PHP 报告类似的数字。(文件 test.php 包含<?php echo system("ulimit -a");

# php test.php
time(seconds)        unlimited
file(blocks)         unlimited
data(kbytes)         unlimited
stack(kbytes)        8192
coredump(blocks)     0
memory(kbytes)       unlimited
locked memory(kbytes) 64
process              6553500
nofiles              100000
vmemory(kbytes)      unlimited
locks                unlimited
locks                unlimited

我以非 root 用户身份从 CLI 运行脚本。

我已将 php 内存大小增加到 2Gb

memory_limit => 2048M => 2048M

我尝试过使用 system、passthrough、shel_exec,但没有什么区别。

PHP 版本为 5.6

PHP 5.6.14-1+deb.sury.org~trusty+1 (cli) 

有人知道如何解决这个问题吗?

答案1

您是否将 apache/nginx 与 php 一起使用,或者从 shell 使用 php?

无论如何,问题可能是进程泄漏或使用了太多内存。

您可以保持打开服务器的 root shell,并尝试从另一个 shell(或浏览器)重现此问题。

然后当它再次发生时,从根 shell 查看进程树 ecc,并让我们知道

相关内容