'exec(): Unable to fork' Ubuntu 14.04.3 LTS
'exec(): Unable to fork' on Ubuntu 14.04.3 LTS
我正在运行宁单元测试脚本和测试用例设置我需要不时运行 shell 命令。结果,在单元测试执行期间,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
我 运行 从 CLI 以非 root 用户身份编写脚本。
我已将 php 内存大小增加到 2Gb
memory_limit => 2048M => 2048M
我尝试过使用系统、直通、shel_exec,但没有任何区别。
PHP版本为5.6
PHP 5.6.14-1+deb.sury.org~trusty+1 (cli)
有人知道如何解决这个问题吗?
我遇到的问题非常简单,与我所做的配置更改无关。我认为将我的经验保留在这里是合理的,这样可以帮助其他开发人员避免同样的问题。
问题是服务器内存不足。它是具有 1Gb RAM 的虚拟机。当脚本内存使用量约为 700Mb 时,它开始失败并出现 'unable to fork' 错误。这很奇怪,听起来不像是内存问题。
将服务器的内存大小增加到 4Gb 解决了这个问题。
对于遇到同样 exec(): Unable to fork
问题(而且是一个广泛的问题)的任何人来说,对我有用的只是 运行:
service php7.0-fpm restart
service nginx restart
将服务更改为您的 PHP 当然版本。显然,一些后台进程(在我的例子中是队列工作者)一直在继续,没有触发超时。这 2 个命令重置它们并且一切正常。
我正在运行宁单元测试脚本和测试用例设置我需要不时运行 shell 命令。结果,在单元测试执行期间,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
我 运行 从 CLI 以非 root 用户身份编写脚本。
我已将 php 内存大小增加到 2Gb
memory_limit => 2048M => 2048M
我尝试过使用系统、直通、shel_exec,但没有任何区别。
PHP版本为5.6
PHP 5.6.14-1+deb.sury.org~trusty+1 (cli)
有人知道如何解决这个问题吗?
我遇到的问题非常简单,与我所做的配置更改无关。我认为将我的经验保留在这里是合理的,这样可以帮助其他开发人员避免同样的问题。
问题是服务器内存不足。它是具有 1Gb RAM 的虚拟机。当脚本内存使用量约为 700Mb 时,它开始失败并出现 'unable to fork' 错误。这很奇怪,听起来不像是内存问题。
将服务器的内存大小增加到 4Gb 解决了这个问题。
对于遇到同样 exec(): Unable to fork
问题(而且是一个广泛的问题)的任何人来说,对我有用的只是 运行:
service php7.0-fpm restart
service nginx restart
将服务更改为您的 PHP 当然版本。显然,一些后台进程(在我的例子中是队列工作者)一直在继续,没有触发超时。这 2 个命令重置它们并且一切正常。