php504錯誤怎麼解決

2020-07-16 10:06:25

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其它相關文章!