背景
訪問地址總是提示504超時,就尋思看看PHP慢查詢日誌
vi /usr/local/php/etc/php-fpm.conf
--------------已配置如下----------------------
[global]
error_log = /tmp/php-fpm.log
[www]
request_slowlog_timeout = 5
slowlog = /tmp/www.log.slow
可是呢,www.log.slow下一直爲空
查看php-fpm錯誤日誌/tmp/php-fpm.log,顯示如下
看到error報錯了,就一直搜這個failed to open /proc/13/mem: Permission denied (13),然而並沒什麼卵用,一直找啊找,找了一下午,後又猜測各種可能找到了大神的筆記,才知道問題再trace上不是在權限上
最後在docker-compose.yml文件裏配置了
此項目模塊:
cap_add:
- SYS_PTRACE
重啓,成功!!
大神筆記
最近遇到一個奇怪的問題,在docker的php容器中配置了啓用慢日誌:
slowlog = /tmp/php.slow.log
request_slowlog_timeout = 1s
但是日誌文件總是沒記錄,一直是空的。
最後在serverfault.com上找到答案:
在Linux系統中,PHP-FPM使用
SYS_PTRACE
跟蹤worker進程,
但是docker容器默認又不啓用這個功能,所以就導致了這個問題。
知道了問題所在,解決起來就快了。
如果用命令行,在命令上加上:
- - cap-add=SYS_PTRACE
如果用docker-compose.yml文件,在服務中加上:
php:
cap_add:
- SYS_PTRACE
大神參考地址:
總結
先入爲主的想法很危險,鑽死衚衕容易鬱悶,經驗果然很重要!!!!!