由于網站不穩定的因素,經常報504 Gateway Time-out的錯誤,CPU也跟著100%,每次都要重 啟服務器才可以解決問題,問題的根源在哪里,我們怎么才能進行解決那?下面為大家詳細講解。
什么是“504 Gateway Time-out”
其實很簡單,504 Gateway Time-out就是請求超時,由于服務器未能技術響應而造成的,當然了,數據庫不響應也是可以造成無法連接,或者504的錯誤。
504 Gateway Time-out是由哪些原因造成的。
1,服務器不穩定,死機等會造成 504 Gateway Time-out
如果網站服務器異常,死機等等無法讓用戶得到響應就會造成504 Gateway Time-out的問題,一般情況下,重啟服務器就會OK,如果經常出現這樣的問題,你可以考慮更換服務器來解決。
2,網站被攻擊導致 504Gateway Time-out
如果你的網站被攻擊,比如DOS攻擊,也會造成服務器504Gateway Time-out的錯誤,這個時候就需要增加防御,或者設置DNS隱藏真實IP、購買高防服務器去做硬性防御了,或者安裝云鎖,批量屏蔽攻擊者的IP段,也是可以的。
504 Gateway Time-out是由哪些原因造成的。
1,服務器不穩定,死機等會造成 504 Gateway Time-out
如果網站服務器異常,死機等等無法讓用戶得到響應就會造成504 Gateway Time-out的問題,一般情況下,重啟服務器就會OK,如果經常出現這樣的問題,你可以考慮更換服務器來解決。
2,網站被攻擊導致 504Gateway Time-out
如果你的網站被攻擊,比如DOS攻擊,也會造成服務器504Gateway Time-out的錯誤,這個時候就需要增加防御,或者設置DNS隱藏真實IP、購買高防服務器去做硬性防御了,或者安裝云鎖,批量屏蔽攻擊者的IP段,也是可以的。
3,數據庫與服務器斷開相應
這邊說一下,服務器死機,不一定就是本機異常,也可能是mysql異常所導致的,建議升級數據庫版本,充分保證良性運行。
4,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”錯誤,問題解決。
4,發服務器商的工單,讓服務器商技術協助解決!
最后,如果你是購買正規服務器商的服務器,你也是可以通過發工單來解決這個問題的,讓技術協助你解決,一般而言,景安的服務器是不需要花錢的,阿里云的服務器可能需要花點錢就可以幫你解決,一種非常方便的解決方式。