Nginx 中 502 和 504 錯(cuò)誤

Nginx 中 502 和 504 錯(cuò)誤

本文轉(zhuǎn)自: https://segmentfault.com/a/1190000002686153

在使用Nginx時(shí)摔笤,經(jīng)常會(huì)碰到 502 Bad Gateway 和 504 Gateway Time-out 錯(cuò)誤,下面以 Nginx+PHP-FPM 來分析下這兩種常見錯(cuò)誤的原因和解決方案。

1. 502 Bad Gateway 錯(cuò)誤

在 php.ini 和 php-fpm.conf 中分別有這樣兩個(gè)配置項(xiàng):max_execution_time 和 request_terminate_timeout嚼贡。

這兩項(xiàng)都是用來配置一個(gè) PHP 腳本的最大執(zhí)行時(shí)間的醉冤。當(dāng)超過這個(gè)時(shí)間時(shí)蝙茶,PHP-FPM不只會(huì)終止腳本的執(zhí)行,還會(huì)終止執(zhí)行腳本的Worker進(jìn)程藕坯。所以Nginx會(huì)發(fā)現(xiàn)與自己通信的連接斷掉了,就會(huì)返回給客戶端502錯(cuò)誤噪沙。

以PHP-FPM的 request_terminate_timeout=30 秒時(shí)為例炼彪,報(bào) 502 Bad Gateway 錯(cuò)誤的具體信息如下:

1)Nginx錯(cuò)誤訪問日志:

2013/09/19 01:09:00 [error] 27600#0: *78887 recv() failed (104: Connection reset by peer) while reading response header from upstream, 
client: 192.168.1.101, server: test.com, request: "POST /index.php HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fcgi.sock:", 
host: "test.com", referrer: "http://test.com/index.php"

2)PHP-FPM報(bào)錯(cuò)日志:

WARNING: child 25708 exited on signal 15 (SIGTERM) after 21008.883410 seconds from start
所以只需將這兩項(xiàng)的值調(diào)大一些就可以讓PHP腳本不會(huì)因?yàn)閳?zhí)行時(shí)間長(zhǎng)而被終止了。request_terminate_timeout 可以覆蓋 max_execution_time正歼,所以如果不想改全局的php.ini辐马,那只改PHP-FPM的配置就可以了。

此外要注意的是Nginx的upstream模塊中的 max_fail 和 fail_timeout 兩項(xiàng)局义。有時(shí)Nginx與上游服務(wù)器(如Tomcat喜爷、FastCGI)的通信只是偶然斷掉了冗疮,但 max_fail 如果設(shè)置的比較小的話,那么在接下來的 fail_timeout時(shí)間內(nèi)檩帐,Nginx都會(huì)認(rèn)為上游服務(wù)器掛掉了术幔,都會(huì)返回502錯(cuò)誤。
所以可以將 max_fail 調(diào)大一些湃密,將 fail_timeout 調(diào)小一些特愿。

2. 504 Gateway Time-out 錯(cuò)誤

PHP-FPM設(shè)置的腳本最大執(zhí)行時(shí)間已經(jīng)夠長(zhǎng)了,但執(zhí)行耗時(shí)PHP腳本時(shí)勾缭,發(fā)現(xiàn)Nginx報(bào)錯(cuò)從502變?yōu)?04了揍障。這是為什么呢?

因?yàn)槲覀冃薷牡闹皇荘HP的配置俩由,Nginx中也有關(guān)于與上游服務(wù)器通信超時(shí)時(shí)間的配置factcgi_connect/read/send_timeout毒嫡。

以Nginx超時(shí)時(shí)間為90秒,PHP-FPM超時(shí)時(shí)間為300秒為例幻梯,報(bào)504 Gateway Timeout錯(cuò)誤時(shí)的Nginx錯(cuò)誤訪問日志如下:

 2013/09/19 00:55:51 [error] 27600#0: *78877 upstream timed out (110: Connection timed out) while reading response header from upstream, 
 client: 192.168.1.101, server: test.com, request: "POST /index.php HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fcgi.sock:", 
 host: "test.com", referrer: "http://test.com/index.php"

調(diào)高這三項(xiàng)的值(主要是read和send兩項(xiàng)兜畸,默認(rèn)不配置的話Nginx會(huì)將超時(shí)時(shí)間設(shè)為60秒)之后,504錯(cuò)誤也解決了碘梢。

而且這三項(xiàng)配置可以配置在http咬摇、server級(jí)別,也可以配置在location級(jí)別煞躬。擔(dān)心影響其他應(yīng)用的話肛鹏,就配置在自己應(yīng)用的location中吧。

要注意的是 factcgi_connect/read/send_timeout 是對(duì) FastCGI 生效的恩沛,而 proxy_connect/read/send_timeout 是對(duì) proxy_pass 生效的在扰。

配置舉例:

location ~ \.php$ {
    root                    /home/cdai/test.com;
    include                 fastcgi_params;
    fastcgi_connect_timeout      180;
    fastcgi_read_timeout            600;
    fastcgi_send_timeout            600;
    fastcgi_pass            unix:/dev/shm/php-fcgi.sock;
    fastcgi_index           index.php;
    fastcgi_param          SCRIPT_FILENAME         /home/cdai/test.com$fastcgi_script_name;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雷客,隨后出現(xiàn)的幾起案子芒珠,更是在濱河造成了極大的恐慌,老刑警劉巖搅裙,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皱卓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡部逮,警方通過查閱死者的電腦和手機(jī)娜汁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甥啄,“玉大人存炮,你說我怎么就攤上這事。” “怎么了穆桂?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵宫盔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我享完,道長(zhǎng)灼芭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任般又,我火速辦了婚禮彼绷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茴迁。我一直安慰自己寄悯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布堕义。 她就那樣靜靜地躺著猜旬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倦卖。 梳的紋絲不亂的頭發(fā)上洒擦,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音怕膛,去河邊找鬼熟嫩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褐捻,可吹牛的內(nèi)容都是我干的掸茅。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼舍扰,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼倦蚪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起边苹,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裁僧,沒想到半個(gè)月后个束,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡聊疲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年茬底,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片获洲。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阱表,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情最爬,我是刑警寧澤涉馁,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站爱致,受9級(jí)特大地震影響烤送,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糠悯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一帮坚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧互艾,春花似錦试和、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至局嘁,卻和暖如春溉箕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悦昵。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工肴茄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人但指。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓寡痰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親棋凳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拦坠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 小強(qiáng)性能測(cè)試2016年11月6號(hào)開課。小強(qiáng)python(接口+selenium+Appium)全棧自動(dòng)化測(cè)試班20...
    測(cè)試幫日記閱讀 5,530評(píng)論 0 2
  • 1. Nginx的模塊與工作原理 Nginx由內(nèi)核和模塊組成剩岳,其中贞滨,內(nèi)核的設(shè)計(jì)非常微小和簡(jiǎn)潔,完成的工作也非常簡(jiǎn)單...
    rosekissyou閱讀 10,222評(píng)論 5 124
  • 在實(shí)際的開發(fā)和應(yīng)用中偶發(fā)的502拍棕,504讓人頭痛晓铆,下面轉(zhuǎn)發(fā)一個(gè)寫的比較全面的。 PHP-fpm PHP-FPM是一...
    daos閱讀 2,358評(píng)論 2 18
  • 一绰播、502和504錯(cuò)誤提示說明: Nginx 502 Bad Gateway的意思是請(qǐng)求PHP-CGI已經(jīng)執(zhí)行骄噪,但...
    meng_philip123閱讀 5,238評(píng)論 0 3
  • Nginx簡(jiǎn)介 解決基于進(jìn)程模型產(chǎn)生的C10K問題,請(qǐng)求時(shí)即使無(wú)狀態(tài)連接如web服務(wù)都無(wú)法達(dá)到并發(fā)響應(yīng)量級(jí)一萬(wàn)的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,007評(píng)論 0 9