我运行unit testing脚本和testing用例设置我需要不时运行shell命令。 因此在unit testing执行期间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用户身份运行脚本。
我已经增加了2GB的PHP内存大小
memory_limit => 2048M => 2048M
我试图使用系统,passthrough,shel_exec和它没有区别。
PHP版本是5.6
PHP 5.6.14-1+deb.sury.org~trusty+1 (cli)
有人知道如何解决这个问题吗?
你是用shell或php来使用apache / nginx吗?
无论如何,这些问题可能是stream程泄漏或者使用了太多的内存。
您可以保持打开一个根shell到服务器,并尝试从另一个shell(或浏览器)重现此问题。
然后当它再次发生在根shell的进程树ecc看,让我们知道