如何解決php的504錯誤?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
情景一:
由于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模式即可。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。