web-dev-qa-db-ja.com

dockerコンテナでptraceエラーを引き起こすphpslowlog

私は、5.5.25とphp-fpmが内部で実行されているcentos 7dockerコンテナーを実行しているAWSLinuxホストマシンを持っています。 PHPは、ポート9000を介してDockerコンテナーの外部に公開されており、nginxサーバーへのリクエストに対応しています。この設定は問題なく機能していますが、最近php-fpm slowlogをオンにしていくつかの遅いコードをデバッグしてみましたが、phpに遅いスクリプトを記録させることができませんでした。 /etc/php-fpm.d/www.confに以下を設定しました:

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

/var/www/log/php-fpm-slow.logは、777権限を持つwwwユーザーが所有しています。遅いスクリプトが実行されるたびに、以下がphpエラーログに記録されます。

[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

これから、5秒のrequest_slowlog_timeoutが実際にトリガーされているが、何らかの理由でログを生成できないと考えています。

/etc/sysctl.d/10-ptrace.confまたは/ proc/sys/kernel/yama/ptrace_scopeの変更を示唆する、類似しているが同一ではない問題を確認しました。残念ながら、これらのファイルはどちらも私のホストAWS LinuxまたはコンテナーCentos 7オペレーティングシステムには存在しません。

誰もがこの問題を引き起こしている可能性があること、またはさらにデバッグするためにどのような手順を実行できるかについての考えを持っていますか?

5
Andrew Kett

私はついにこれを理解しました。 Dockerコンテナにptraceを使用する機能を与える必要があります。 dockerrunコマンドに--cap-addSYS_PTRACEを追加するだけで、この問題が修正されました。

11
Andrew Kett