Tentando configurar o PHP para realizar um core dump, executei o seguinte:
[root@myserver ~]# echo '/tmp/core-%e.%p' > /proc/sys/kernel/core_pattern
[root@myserver ~]# echo 0 > /proc/sys/kernel/core_uses_pid
[root@myserver ~]# ulimit -c unlimited
Não sei quais eram os valores ulimit originais, mas agora eles são os seguintes:
[michael@myserver ~]$ ulimit
unlimited
[michael@myserver ~]$ 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) 7867
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
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) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[michael@myserver ~]$
Também fiz algumas alterações nos arquivos de configuração do php-fpm, mas já os alterei de volta às configurações padrão.
Estou executando Centos7. Para que devo definir os valores ulimit de volta? Além disso, devo fazer alguma coisa para reverter os dois echo
comandos?
Isso se parece com os valores padrão para mim. Se você os alterou usando a CLI, as alterações não serão permanentes. Você pode reiniciar a sessão e eles voltarão aos valores originais.
Da mesma forma,
proc
as mudanças não são permanentes; uma reinicialização irá redefini-los.Você está alterando o ulimit do shell com o qual está conectado se executar “ulimit -c 0” e não o serviço php-fpm.
Você precisa adicionar um “LimitCORE=infinity” ao serviço que inicia o serviço php-fpm se quiser que seja permanente. Consulte a documentação do systemd para obter mais detalhes.
Para fazer isso, você executaria (como root) “systemctl edit php-rpm.service”, e um editor aparecerá, onde você adicionaria algo assim:
(ou use um limite de tamanho de núcleo sensato como 1G)
Para preservar o core_pattern, você precisa desabilitar systemd-coredump e abrtd, e definir o kernel.core_pattern por meio de um arquivo sysctl em /etc/sysctl.d/.