国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

Nginx 502 bad gateway和Nginx 504 Gateway Time-out錯(cuò)誤解決方

2019-11-02 16:07:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
最近服務(wù)器宕機(jī)的現(xiàn)象比較頻繁,臨下班時(shí)分,G給掛掉了,502 Bad Gateway Nginx,不由得讓我想起之前的504 Gateway Time-out,兩者應(yīng)該有點(diǎn)聯(lián)系,一定得弄清楚。Nginx 504 Gateway Time-out的含義是所請(qǐng)求的網(wǎng)關(guān)沒(méi)有請(qǐng)求到,簡(jiǎn)單來(lái)說(shuō)就是沒(méi)有請(qǐng)求到可以執(zhí)行的PHP-CGI。

解決這兩個(gè)問(wèn)題其實(shí)是需要綜合思考的,一般來(lái)說(shuō)Nginx 502 Bad Gateway和php-fpm.conf的設(shè)置有關(guān),而Nginx 504 Gateway Time-out則是與nginx.conf的設(shè)置有關(guān)。

Nginx 504 Gateway在之前的文章中已經(jīng)記錄過(guò),這里暫且忽略,直接說(shuō)502 bad gateway的解決方法,最關(guān)鍵的是php-fpm.conf的設(shè)置。php-fpm.conf有兩個(gè)至關(guān)重要的參數(shù),一個(gè)是”max_children”,另一個(gè)是”request_terminate_timeout”,這兩個(gè)值是需要計(jì)算的。

如果你的服務(wù)器性能足夠好,且寬帶資源足夠充足,PHP腳本沒(méi)有系循環(huán)或BUG的話你可以直接將”request_terminate_timeout” 設(shè)置成0s。0s的含義是讓PHP-CGI一直執(zhí)行下去而沒(méi)有時(shí)間限制。而如果你做不到這一點(diǎn),也就是說(shuō)你的PHP-CGI可能出現(xiàn)某個(gè)BUG,或者你的寬帶不夠充足,或者其他的原因?qū)е履愕腜HP-CGI能夠假死,那么,就建議你給”request_terminate_timeout”賦一個(gè)值,這個(gè)值可以根據(jù)你服務(wù)器的性能進(jìn)行設(shè)定。一般來(lái)說(shuō)性能越好你可以設(shè)置越高。

”max_children”這個(gè)值又是怎么計(jì)算出來(lái)的呢?這個(gè)值原則上是越大越好,php-cgi的進(jìn)程多了就會(huì)處理的很快,排隊(duì)的請(qǐng)求就會(huì)很少。設(shè)置”max_children”也需要根據(jù)服務(wù)器的性能進(jìn)行設(shè)定,如果每一個(gè)php-cgi所耗費(fèi)的內(nèi)存在20M左右,”max_children”設(shè)置成80,20M*80=1600M也就是說(shuō)在峰值的時(shí)候所有PHP-CGI所耗內(nèi)存在1600M以內(nèi),低于有效內(nèi)存即可。

而如果”max_children”設(shè)置的較小,比如5-10個(gè),那么php-cgi就會(huì)”很累”,處理速度也很慢,等待的時(shí)間也較長(zhǎng)。如果長(zhǎng)時(shí)間沒(méi)有得到處理的請(qǐng)求就會(huì)出現(xiàn)504 Gateway Time-out這個(gè)錯(cuò)誤,而正在處理的”很累”的那幾個(gè)php-cgi如果遇到了問(wèn)題就會(huì)出現(xiàn)502 Bad gateway這個(gè)錯(cuò)誤。

下面是更詳細(xì)的介紹資料:

一些運(yùn)行在Nginx上的網(wǎng)站有時(shí)候會(huì)出現(xiàn)“502 Bad Gateway”錯(cuò)誤,有些時(shí)候甚至頻繁的出現(xiàn)。以下是小編搜集整理的一些Nginx 502錯(cuò)誤的排查方法,供參考:

  Nginx 502錯(cuò)誤的原因比較多,是因?yàn)樵诖砟J较潞蠖朔?wù)器出現(xiàn)問(wèn)題引起的。這些錯(cuò)誤一般都不是nginx本身的問(wèn)題,一定要從后端找原因!但nginx把這些出錯(cuò)都攬?jiān)谧约荷砩狭耍鴮?shí)讓nginx的推廣者備受置疑,畢竟從字眼上理解,bad gateway?不就是bad nginx嗎?讓不了解的人看到,會(huì)直接把責(zé)任推在nginx身上,希望nginx下一個(gè)版本會(huì)把出錯(cuò)提示寫(xiě)稍微友好一些,至少不會(huì)是現(xiàn)在簡(jiǎn)單的一句 502 Bad Gateway,另外還不忘附上自己的大名。

Nginx 502的觸發(fā)條件

  502錯(cuò)誤最通常的出現(xiàn)情況就是后端主機(jī)當(dāng)機(jī)。在upstream配置里有這么一項(xiàng)配置:proxy_next_upstream,這個(gè)配置指定了 nginx在從一個(gè)后端主機(jī)取數(shù)據(jù)遇到何種錯(cuò)誤時(shí)會(huì)轉(zhuǎn)到下一個(gè)后端主機(jī),里頭寫(xiě)上的就是會(huì)出現(xiàn)502的所有情況拉,默認(rèn)是error timeout。error就是當(dāng)機(jī)、斷線之類的,timeout就是讀取堵塞超時(shí),比較容易理解。我一般是全寫(xiě)上的:

復(fù)制代碼 代碼如下:

proxy_next_upstream error timeout invalid_header http_500 http_503; 

 不過(guò)現(xiàn)在可能我要去掉http_500這一項(xiàng)了,http_500指定后端返回500錯(cuò)誤時(shí)會(huì)轉(zhuǎn)一個(gè)主機(jī),后端的jsp出錯(cuò)的話,本來(lái)會(huì)打印一堆 stacktrace的錯(cuò)誤信息,現(xiàn)在被502取代了。但公司的程序員可不這么認(rèn)為,他們認(rèn)定是nginx出現(xiàn)了錯(cuò)誤,我實(shí)在沒(méi)空跟他們解釋502的原理 了……
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉义县| 安溪县| 曲麻莱县| 隆尧县| 巴青县| 大庆市| 内江市| 吉林市| 寿宁县| 沂水县| 焦作市| 军事| 临江市| 德令哈市| 江油市| 留坝县| 水富县| 新昌县| 迭部县| 青浦区| 耒阳市| 疏附县| 土默特右旗| 榆中县| 泾源县| 宁晋县| 密云县| 吕梁市| 安泽县| 五寨县| 泰宁县| 和田市| 得荣县| 铜梁县| 阜阳市| 曲麻莱县| 泗洪县| 延津县| 舞阳县| 盐源县| 城口县|