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模式即可。
如果您想學習更多相關知識,請造訪php中文網。
以上是php504錯誤怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!