国产精品久久香蕉免费播放,久久18禁高潮出水呻吟娇喘,亚洲AV无码成人精品区狼人影院,456亚洲影院,日本伊人精品一区二区三区

美國服務(wù)器出現502問(wèn)題的解決建議

美國服務(wù)器出現502問(wèn)題的解決建議

美國服務(wù)器運行在Nginx上的網(wǎng)站有一定概率會(huì )出現【502 Bad Gateway】錯誤,而有些美國服務(wù)器是在轉移到Nginx之后就出現了這個(gè)問(wèn)題,這可能并不是Nginx的原因, 美國服務(wù)器網(wǎng)站Nginx 502錯誤的原因比較多,主要是因為在代理模式下后端服務(wù)器出現問(wèn)題引起的。今天美聯(lián)科技小編就來(lái)分析下美國服務(wù)器502錯誤問(wèn)題的解決辦法。

美國服務(wù)器502錯誤最通常的出現情況就是后端主機當機。在upstream配置里有這么一項配置:proxy_next_upstream,這個(gè)配置指定了nginx在從一個(gè)后端主機取數據遇到何種錯誤時(shí)會(huì )轉到下一個(gè)后端主機,這里寫(xiě)上的就是會(huì )出現502的所有情況,默認是error timeout。error是當機、斷線(xiàn)之類(lèi)的,timeout是讀取堵塞超時(shí)??梢詫?xiě)為

proxy_next_upstream error timeout invalid_header http_500 http_503;

也可以去掉http_500這一項了,http_500指定后端返回500錯誤時(shí)會(huì )轉一個(gè)主機,后端的jsp出錯的話(huà),本來(lái)會(huì )打印一堆stacktrace的錯誤信息,現在被502取代了。503錯誤就可以保留,因為后端通常是apache resin,如果apache死機就是error,但resin死機,僅僅是503,所以還是有必要保留的。

美國服務(wù)器遇到502問(wèn)題,可以?xún)?yōu)先考慮按照以下兩個(gè)步驟去解決。

1、查看當前的PHP FastCGI進(jìn)程數是否夠用

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

如果實(shí)際使用的【FastCGI進(jìn)程數】接近預設的【FastCGI進(jìn)程數】,那么,說(shuō)明【FastCGI進(jìn)程數】不夠用,需要增大。

2、部分PHP程序的執行時(shí)間超過(guò)了Nginx的等待時(shí)間

可以適當增加nginx.conf配置文件中FastCGI的timeout時(shí)間。php.ini中memory_limit設低了會(huì )出錯,修改了php.ini的memory_limit為64M,重啟nginx,如果發(fā)現恢復了,那么就是PHP的內存不足的原因。

3、max-children和max-requests

美國服務(wù)器主機上運行著(zhù)nginx php(fpm) xcache的話(huà),訪(fǎng)問(wèn)量日均 300W pv左右。如果是近期出現php頁(yè)面打開(kāi)很慢,cpu使用率突然降至很低,系統負載突然升至很高,查看網(wǎng)卡的流量,也會(huì )發(fā)現突然降到了很低這樣的情況,而且這種情況只持續數秒鐘就恢復,這時(shí)檢查php-fpm的日志文件發(fā)現了一些線(xiàn)索:

1)Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200

2)Sep 30 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371: using inherited socket fd=10, “127.0.0.1:9000″

3)Sep 30 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109: libevent: using epoll

4)Sep 30 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is running, pid 30587

看顯示的這幾句的前面,是1000多行的關(guān)閉children和開(kāi)啟children的日志。因為php-fpm有一個(gè)參數 max_requests,該參數指明每個(gè)children最多處理多少個(gè)請求后便會(huì )被關(guān)閉,默認的設置是500。因為php是把請求輪詢(xún)給每個(gè)children,在大流量下,每個(gè)childre到達max_requests所用的時(shí)間都差不多,這樣就造成所有的children基本上在同一時(shí)間被關(guān)閉。

在這期間,nginx無(wú)法將php文件轉交給php-fpm處理,所以cpu會(huì )降至很低,不用處理php,更不用執行sql,而負載會(huì )升至很高,關(guān)閉和開(kāi)啟children、nginx等待php-fpm,網(wǎng)卡流量也降至很低,nginx無(wú)法生成數據傳輸給客戶(hù)端。

解決方式很簡(jiǎn)單,就是增加children的數量,并且將 max_requests 設置未 0 或者一個(gè)比較大的值,打開(kāi) /usr/local/php/etc/php-fpm.conf,調大以下兩個(gè)參數,但是要根據美國服務(wù)器主機實(shí)際情況,數值過(guò)大也不行。

1)<value name=”max_children”>5120</value>

2)<value name=”max_requests”>600</value>

然后再重啟php-fpm,就能恢復了。

4、增加緩沖區容量大小

將nginx的error log打開(kāi),發(fā)現【pstream sent too big header while reading response header from upstream】這樣的錯誤提示。大概意思是nginx緩沖區有一個(gè)bug造成的,網(wǎng)站的頁(yè)面消耗占用緩沖區可能過(guò)大。

參考國外系統管理員寫(xiě)的修改辦法,增加了緩沖區容量大小設置,502問(wèn)題徹底解決。后來(lái)系統管理員又對參數做了調整只保留了2個(gè)設置參數:client head buffer,fastcgi buffer size。

5、request_terminate_timeout

如果主要是在一些post或者數據庫操作的時(shí)候出現502這種情況,而不是在靜態(tài)頁(yè)面操作中常見(jiàn),那么可以查看一下php-fpm.conf設置中的一項:

request_terminate_timeout

這個(gè)值是max_execution_time,就是fast-cgi的執行腳本時(shí)間。

0s為關(guān)閉,就是無(wú)限執行下去。這樣問(wèn)題也就解決了,執行很長(cháng)時(shí)間也不會(huì )出錯。

優(yōu)化fastcgi中,還可以改改這個(gè)值5s 看看效果。php-cgi進(jìn)程數不夠用、php執行時(shí)間長(cháng)、或者是php-cgi進(jìn)程崩潰,都會(huì )出現502錯誤。

關(guān)注美聯(lián)科技,了解更多IDC資訊!

 

 

客戶(hù)經(jīng)理