nginx Gateway Time-out 處理方法

從錯誤代碼基本可以確定跟nginx本身無關,主要是提交給php-fpm的請求未能正確反饋而導致,一般情況下,提交動態請求的時候,nginx會直接 把請求轉交給php-fpm,而php-fpm再分配php-cgi進程來處理相關的請求,之後再依次返回,最後由nginx把結果反饋給客戶端瀏覽器, 但我這個vps目前跑的是個純php應用內容,實際上用戶所有的請求都是php請求,有的耗費時間比較久,php-cgi進程就一直都被用滿,而php- fpm本身的配置文件只打開了10組php-cgi進程,這樣的話在線用戶稍微多的話就會導致請求無法被正常處理而出錯。

大概分析出了原因,下面做就比較容易了,首先是更改php-fpm的幾處配置:

把max_children由之前的10改爲現在的30,這樣就可以保證有充足的php-cgi進程可以被使用;
把request_terminate_timeout由之前的0s改爲60s,這樣php-cgi進程處理腳本的超時時間就是60秒,可以防止進程都被掛起,提高利用效率。

接着再更改nginx的幾個配置項,減少FastCGI的請求次數,儘量維持buffers不變:

fastcgi_buffers由 4 64k 改爲 2 256k;
fastcgi_buffer_size由 64k 改爲 128K;
fastcgi_busy_buffers_size 由 128K 改爲 256K;
fastcgi_temp_file_write_size 由 128K 改爲 256K。



轉自“http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=235”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章