1. 程式人生 > >ubuntu14.04 nginx報upstream timed out 問題原因,解決辦法

ubuntu14.04 nginx報upstream timed out 問題原因,解決辦法

訪問php時一直出現http 504Gateway Time-out錯誤

錯誤日誌裡看到幾百個 upstream timed out 的錯誤

2016/11/01 10:32:45 [error] 3897#0: *1831129 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 42.92.152.137, server: xxx.xxx.cn, request: “GET / HTTP/1.1″, upstream: “fastcgi://unix:/var/run/php5-fpm.sock:

″, host: “xxx.xxx.cn”, referrer: “http://xxx.xxx.cn/”

從日誌的表示來看應該不是nginx的問題,而是 fast-cgi 執行超時沒有及時返回資料到ngnix的問題. 可web和資料庫負載都不高,不應該是程式超時的問題.

一般看來, 這種情況可能是由於nginx預設的fastcgi程序響應的緩衝區太小造成的, 這將導致fastcgi程序被掛起, 如果你的fastcgi服務對這個掛起處理的不好, 那麼最後就極有可能導致504 Gateway Time-out
現在的網站, 尤其某些論壇有大量的回覆和很多內容的, 一個頁面甚至有幾百K
預設的fastcgi程序響應的緩衝區是8K, 我們可以設定大點
在nginx.conf裡, 加入:

fastcgi_buffers 8 128k

這表示設定fastcgi緩衝區為8×128k
當然如果您在進行某一項即時的操作, 可能需要nginx的超時引數調大點, 例如設定成60秒:

send_timeout 60;

NGINX反代理超時報錯,解決方法:

server {
 listen  80;
 server_name  *.xywy.com ;
 large_client_header_buffers 4 16k;
 client_max_body_size 300m;
 client_body_buffer_size 128k;
 proxy_connect_timeout 600;
 proxy_read_timeout 600;
 proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers  4 32k;
 proxy_busy_buffers_size 64k;
 proxy_temp_file_write_size 64k;

……………………

service nginx restart

vi /etc/php5/fpm/php-fpm.conf 增加以下配置

request_terminate_timeout=30s (php.ini早就是max_execution_time = 30

後提示變成502了,


一看php的錯誤日誌如下:

2016/11/01 10:36:46 [error] 5471#0: *238740 connect() to unix:/var/run/php5-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 42.92.152.137, server: *.*.cn, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "*.*.cn"

肯定是之前修改了php-fpm.conf沒有重啟php-fpm的緣故

重啟 /etc/init.d/php5-fpm restart
問題解決