Nginx報錯日志有如下內容:
upstream timed out (110: Connection timed out) while reading response header from upstream..
服務器開發環境: SLES12sp2 + Nginx + PHP-FPM + Maraidb集群
請求PHP頁面,瀏覽器一直處在加載狀態,頁面阻塞,沒有任何反應;
網上很多資料,大意是修改nginx配置文件,延長fastcgi等待時間,但不能解決根本問題。
經測試,問題出在php-fpm,php代碼要使用file存取session,讀寫數據庫,其中有一項操作緩慢,都能造成nginx假死;
解決方案:
打開php-fpm慢日志:
mkdir /var/log/php-fpm && chown nginx:nginx /var/log/php-fpm
vi /etc/php7/fpm/php-fpm.d/www.conf
修改:
request_slowlog_timeout = 2s
request_terminate_timeout = 30s
slowlog = /var/log/php-fpm/$pool.log.slow
重啟nginx和php-fpm
刷新頁面,頁面一直停留在阻塞狀態,沒有反應,這時,
tailf /var/log/php-fpm/www.log.slow
可以清楚看到執行慢的語句和操作,這樣就能找到具體原因!
