1、伺服器500錯誤

伺服器500錯誤是伺服器的內部錯誤,

可能原因

1、程序語言錯誤,例如:ASP或者PHP語法錯誤;

2、高並發導致,系統資源限制不能打開過多的文件所致;

2、伺服器501錯誤

伺服器不支持請求的功能,無法完成請求,伺服器無法識別請求方法時可能會返回此代碼。

3、伺服器502錯誤

502錯誤是WEB伺服器故障,可能是由於程序進程不夠,請求的php-fpm已經執行,但是由於某種原因而沒有執行完畢,最終導致php-fpm進程終止。

可能原因:

1、Nginx伺服器,php-cgi進程數不夠用;

2、PHP執行時間過長;

3、php-cgi進程死掉;

4、伺服器503錯誤

伺服器目前無法使用,系統維護伺服器暫時的無法處理客戶端的請求,這只是暫時狀態。可以聯繫下伺服器提供商。

5、伺服器504錯誤

伺服器504錯誤表示超時,是指客戶端所發出的請求沒有到達網關,請求沒有到可以執行的php-fpm,一般是與nginx.conf的配置有關。

6、伺服器505錯誤

伺服器不支持請求中所用的HTTP協議版本,一般的請款下瀏覽器的默認都是1.x的版本的,如果出現了HTTP1.1版本的,那麼你需要在Internet選項的高級下進行設置的。

除了500錯誤可能是程序語言錯誤,其餘的報錯,都大概可以理解為伺服器出現問題


伺服器502錯誤。這是伺服器上的一個錯誤網關 ,因此說它是無效的,我們在出現了伺服器502錯誤問題的時候,最好是先清除下緩存或者是在伺服器上進行刷新試試的,因為502錯誤牽扯的問題也是很多的,最好是讓程序們來去在伺服器上下文章。


請注意,是持續一直502還是間歇性

持續性的話麻煩檢查代碼,間歇性建議增加伺服器性能,以及php的最大子進程

同時注意防範cc攻擊


伺服器出現502是因為這是錯誤網關 ,它是無效的。

如何解決這個問題呢,你可以試試下文的方法:

1、清除緩存;

2、在伺服器上刷新試試;

3、檢查伺服器的鏈接:

4、檢查伺服器的日誌;

5、梳理網站代碼查找漏洞;

6、換一台伺服器,給你推薦幾款性價比高的伺服器,如下所示,你可以參考考:

bluehost Basic 內存 6 GB DDR3,獨享帶寬 5M ,流量 不計量,免費IP 1 ,價格為839元/月;

bluehost Standard 內存 14 GB DDR3,獨享帶寬 5M ,流量 不計量,免費IP 1 ,價格為1139元/月;

bluehost Elite 內存 22 GB DDR3,獨享帶寬 5M ,流量 不計量,免費IP 1 ,價格為1559元/月;

bluehost Pro 內存 30 GB DDR3,獨享帶寬 5M ,流量 不計量,免費IP 1 ,價格為1799元/月;

註:使用優惠碼MDD能夠享受一定的優惠


出現502的原因是:

對用戶訪問請求的響應超時造成的,簡單來說 502 是報錯類型代碼 bad gateway 錯誤的網關。連接超時 我們向伺服器發送請求 由於伺服器當前鏈接太多,導致伺服器方面無法給於正常的響應,產生此類報錯。在最基本的級別上,502錯誤網關表示伺服器通信出現了問題。它涉及網關或代理伺服器之間的通信,這些網關或代理伺服器接受來自上游(或源)伺服器的無效響應。當上游伺服器和網關伺服器無法決定交換數據的協議,就會出現問題,因此無法顯示網站。502錯誤通常意味著在你的網站設置過程中出現了錯誤配置。

具體分析有幾下幾點:

  • 伺服器超載——如果伺服器耗盡內存,伺服器可能會崩潰,原因是站點上有大量訪問者或DDOS攻擊。
  • 防火牆阻止請求——防火牆可能會阻止邊緣伺服器和上游伺服器之間的通信。某些DDoS保護系統可能會過度反應並阻止來自內容傳送系統的請求。
  • 編程錯誤——有時網站代碼中的一個錯誤可能意味著請求不能得到正確的響應,從而導致出現這個錯誤。
  • 網路錯誤——DNS問題、路由問題和ISP相關的問題也可以導致錯誤網關。
  • 伺服器軟體超時——當Web伺服器需要更多時間來完成並且緩存工具達到其超時值時,也會發生此錯誤。慢查詢也會導致此問題。

解決辦法:

1.提高 Web 伺服器的響應速度,也即減少內部的調用關係,可以把需要的頁面、素材或數據,緩存在內存中,可以是專門的緩存伺服器 ,也可以Web伺服器自身的緩存,提高響應速度;

2.網路帶寬的問題,則對傳輸的數據包進行壓縮處理,或者向IDC申請增加帶寬;

3.屬於內部網路的故障或設置問題,也即內部網路擁塞,可能內部存在大量的數據調用或交互造成的,則需要優化內部網路傳輸或協議;

4.另外很大的問題在MySQL資料庫這一塊,如果資料庫執行命令超時也會大延長php腳本的執行時間,導致 Nginx 等待超時。可以my.cnf的 slow log進行確認效能低下的sql語句是哪些,進行優化配置。資料庫的數據讀取造成前端伺服器 ,響應用戶的請求變慢,那麼必須提高資料庫的處理能力,若是只讀業務可以增加數據緩存的模式 或者增加資料庫備機,分散讀壓力; 若是寫的壓力,則可以考慮延遲寫的模式,想這個時候做數據寫分散肯定來不及。

5.在發生錯誤時檢查Web伺服器日誌將是一個很好的起點。如果你是該網站的所有者,則可以檢查你的FQDN(完全限定的域名)是否正確解析。你還可以通過ping文本或traceroute檢查伺服器是否可訪問。


502一般是前端加了反向代理(如用了nginx代理或cdn等),代理伺服器向後端伺服器訪問時出錯導致的。對比代理上的訪問日誌和後端程序日誌看看吧。


1:php-cgi進程數不夠用

vim php-fpm.conf

修改其中的2個參數

(1)在安裝好使用過程中出現502問題,一般是因為默認php-cgi進程是5個,可能因為phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當增加

這個數值是不確定的 需要我們自己算的,這個值原則上是越大越好,php-cgi的進程多了就會處理的很快,排隊的請求就會很少,減小出現502錯誤的機率。

一般來說,一台伺服器的正常情況下每一個php-cgi要耗費的內存為20M左右。如果我就將此值設為80,那麼也就是說大概要耗費伺服器1600M內存。

查看一下當前系統中有多少個php-cgi進程在運行

netstat -anpo | grep php-cgi | wc -l

如果這個值接近你的在配置文件裡面設置的值,說明需要增加

註:這要根據機器的實際情況而定,每個機器的硬體設施和環境不一樣

參數為:&80&

(2)另外一個參數就是php-cgi腳本的執行時間

&0s&這裡寫0s的意思是讓php-cgi一直執行下去,沒有時間限制。

注意:如果你做不到這一點,也就 是說你的PHP-CGI可能出現某個BUG,或者你的寬頻不夠充足或者其他的原因導致你的PHP-CGI假死那麼就建議你給 request_terminate_timeout賦一個值,這個值可以根據伺服器的性能進行設定。一般來說性能越好你可以設置越高,20分鐘-30分 鍾都可以。

修改完這兩個參數,重啟一下php-cgi,看是否還出現502錯誤

2: php執行時間長

php執行超時,修改/usr/local/php/etc/php.ini 將max_execution_time 改為300

重啟一下php-cgi,看是否還出現502錯誤

3: php-cgi進程死掉

殺死其進程,重啟php-cgi


換一台伺服器就可以了


基本大部分是是性能問題


是不是請求頭過大導致的,比如 cookie 太多了,有些後端,比如 nginx 可能會限制請求頭的大小。


推薦閱讀:
相关文章