php504錯誤的解決方法:1、增加fastcgi進程響應的緩衝區大小;2、更改php環境設定,增加php-cgi進程處理指令碼的超時時間;3、將php-fpm的處理方式改成apache模式。
解決方法如下:
情景一:
由於nginx預設的fastcgi進程響應的緩衝區太小造成的錯誤
解決方式:
一般預設的fastcgi進程響應的緩衝區是8K,這時可以設定大一點,在nginx.conf裡,加入:fastcgi_buffers 8 128k,這表示設定fastcgi緩衝區為8塊128k大小的空間。
當然如果在進行某一項即時的操作, 可能需要nginx的超時引數調大點,例如設定成60秒:send_timeout 60;經過這兩個引數的調整,一般不會再提示「504 Gateway Time-out」錯誤,問題基本解決。
情景二:
PHP環境的設定問題
有時候網站需要對php-fpm和nginx進行設定修改。因為這種情況下,也會出現「504 Gateway Time-out」錯誤提示。而這時候Nginx 504 Gateway Time-out的含義就是所請求的閘道器沒有請求到,簡單來說就是沒有請求到可以執行的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。
重新載入php-fpm和nginx的設定,再次測試,如果沒有出現「504 Gateway Time-out」錯誤,問題便解決了。
情景三:
php-fpm的預設靜態處理方式會使得php-cgi的進程長期佔用記憶體而無法釋放,從而導致出現504錯誤。
解決方式:
將php-fpm的處理方式改成apache模式即可。
如果您想學習更多相關知識,請存取TW511.COM。
以上就是php504錯誤怎麼解決的詳細內容,更多請關注TW511.COM其它相關文章!