[06-Apr-2017 22:55:02] WARNING: [pool www] child 6785 exited on signal 11 (SIGSEGV) after 7896.992354 seconds from start
首先這個錯誤是某個php script崩潰
不是error也不是遇到什麼錯誤
而是執行過程整個process崩潰
查了一些資料
整理出有幾個原因
第一:
量太大,buffer不夠用
這很簡單,只需要調大buffer就好
修改php.ini和php-fpm.ini
把所有buffer和memory有關的設定都調大
第二:
php執行時間超過nginx等待時間
預設是60s
所以把
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
這三項調大
第三:
php本身bug導致進程崩潰
這有可能是裝了某個extesion
或是不穩定的php版本造成的
這時候就需要自己重新compile php
並打開debug
./configure xxxxxxx --enable-debug
然後打開產生coredump
# ulimit -c unlimited
並且可以自訂coredump產生的文件目的在哪
# vi /etc/sysctl.conf
kernel.core_uses_pid = 1
fs.suid_dumpable = 2
kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t
# sysctl -p
然後重啟php-fpm
這時候發生崩潰就會在/tmp底下產生coredump檔案
並用gdb來trace
詳情請見官方說明