php slowlog causando erro ptrace no contêiner docker

5

Eu tenho uma máquina host AWS Linux rodando um contêiner docking centos 7 com 5.5.25 e php-fpm rodando dentro dele. Php é exposto fora do contêiner docker pela porta 9000 e está atendendo a solicitações para um servidor nginx. Esta configuração tem funcionado bem, mas quando eu recentemente liguei o php-fpm slowlog para tentar depurar algum código lento e eu não consegui fazer o php registrar scripts lentos. Eu configurei o seguinte em /etc/php-fpm.d/www.conf:

request_slowlog_timeout = 5s
slowlog = /var/www/log/php-fpm-slow.log

e /var/www/log/php-fpm-slow.log são de propriedade do usuário www com 777 permissões. O seguinte está sendo registrado no log de erros do php toda vez que um script lento é executado.

[07-Jul-2015 07:33:34] ERROR: failed to ptrace(ATTACH) child 18: Operation not permitted (1)
[07-Jul-2015 07:33:34] WARNING: [pool www] child 18, script '/var/www/src/index.php' (request: "GET /index.php") executing too slow (5.700050 sec), logging

Estou tirando isso de que o request_slowlog_timeout de 5s está realmente sendo acionado, mas por algum motivo o log não pode ser gerado.

Eu tenho visto problemas similares, mas não idênticos, que sugerem a modificação de /etc/sysctl.d/10-ptrace.conf ou / proc / sys / kernel / yama / ptrace_scope. Infelizmente nenhum desses arquivos existe no meu host AWS Linux ou contêiner Centos 7 Sistemas operacionais.

Alguém tem alguma ideia do que pode estar causando esse problema ou quais etapas eu posso seguir para depurar mais?

    
por Andrew Kett 07.07.2015 / 10:30

1 resposta

10

Eu finalmente percebi isso. Você precisa dar ao contêiner docker a capacidade de usar o ptrace. Basta adicionar --cap-add SYS_PTRACE ao comando docker run para resolver este problema.

    
por 20.07.2015 / 10:38