php - 'exec() : Unable to fork' on Ubuntu 14. 04.3 LTS

标签 php linux shell ubuntu ubuntu-14.04

我正在运行单元测试脚本,为了测试用例设置,我需要不时运行 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 运行脚本。

我已经将 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 时,它开始失败并出现“无法 fork ”错误。这很奇怪,听起来不像是内存问题。

将服务器的内存大小增加到 4Gb 解决了这个问题。

关于php - 'exec() : Unable to fork' on Ubuntu 14. 04.3 LTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33499871/

相关文章:

php - MySql,循环(while foreach)

linux - zgrep 在搜索之前是否解压缩文件?

linux - 在 Ubuntu Server 12.04 上安装最新 Haskell 源时出错

linux - 如何使用 Shell 脚本解析报告?

javascript - 如何在 wordpress 页面上包含一个带有自己的 css 和 javascript 的 php 页面?

php - 读取初始通信数据包时与 MySQL 服务器失去连接,系统错误 : 111

php - 在连接字段中以任意顺序过滤具有多个单词的 mySQL 数据库

linux - 在数字之间插入符号

java - 在 shell 脚本中设置环境变量/在 Java 程序中访问

linux - 如何在 linux 中找到一个字符串匹配和一个字符串不匹配的 jar