Erro de script PHP 'exec (): Incapaz de bifurcar…' no Ubuntu 14.04.3 LTS

1

Estou executando scripts do teste unitário e, para a configuração do caso de teste, eu preciso executar o comando shell de tempos em tempos. Como resultado, o comando shell é executado cerca de 50 vezes durante a execução do teste unitário.

Funciona bem no servidor do CentOS versão 6.6 (Final), mas não funciona no Ubuntu 14.04.3 LTS.

O problema é que após cerca de 20 vezes a execução do script shell eu recebo o seguinte erro:

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]

Eu verifiquei todos os tópicos em torno da internet e ninguém me ajudou. Eu aumentei o número do processo e limite os arquivos abertos a valores enormes

# 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 relata números semelhantes. (arquivo test.php contém <?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

Eu executo scripts como um usuário não-root da CLI.

Eu aumentei o tamanho da memória do php para 2Gb

memory_limit => 2048M => 2048M

Eu tentei usar system, passthrough, shel_exec e isso não faz diferença.

A versão do PHP é 5.6

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

Alguém sabe como resolver o problema?

    
por Stepashka 03.11.2015 / 14:24

1 resposta

1

Você está usando o apache / nginx com php ou php a partir do shell?

Em qualquer caso, os problemas podem ser um vazamento no processo ou muita memória usada.

Você pode manter um shell de raiz aberto no servidor e tentar reproduzir esse problema de outro shell (ou navegador).

Então, quando isso acontecer, dê uma olhada na árvore de processos ecc a partir do shell de root e nos informe

    
por 03.11.2015 / 14:31