Ошибка скрипта PHP «exec (): невозможно выполнить вилку…» в Ubuntu 14.04.3 LTS

Я запускаю скрипты unittest, и для настройки тестового примера мне нужно время от времени запускать команду оболочки. В результате команда оболочки запускается примерно 50 раз во время выполнения unittest.

Он работает нормально на сервере CentOS версии 6.6 (Final), но не работает в Ubuntu 14.04.3 LTS.

Проблема в том, что примерно через 20 раз после выполнения сценария оболочки я получаю следующую ошибку:

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 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 из интерфейса командной строки.

Я увеличил память php размер до 2Гб

memory_limit => 2048M => 2048M

Я пробовал использовать system, passthrough, shel_exec, и это не имеет значения.

Версия PHP - 5. 6

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

Кто-нибудь знает, как решить проблему?

1
задан 3 November 2015 в 15:24
1 ответ

Используете ли вы apache / nginx с php или php из оболочки?

В любом случае проблема может заключаться в утечке процесса или использовании слишком большого количества памяти.

Вы может открыть корневую оболочку для сервера и попытаться воспроизвести эту проблему из другой оболочки (или браузера).

Затем, когда это произойдет снова, взгляните на дерево процессов ecc из корневой оболочки и сообщите нам

1
ответ дан 3 December 2019 в 23:57

Теги

Похожие вопросы