綠色資源網(wǎng):您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資源網(wǎng)

技術(shù)教程
您的位置:首頁(yè)服務(wù)器類Web服務(wù)器 → LNMPA遇到504 Gateway time-out錯(cuò)誤的解決方法

LNMPA遇到504 Gateway time-out錯(cuò)誤的解決方法

我要評(píng)論 2012/11/29 20:54:01 來(lái)源:綠色資源網(wǎng) 編輯:m.sonlywya.cn [ ] 評(píng)論:0 點(diǎn)擊:457次

Nginx的特點(diǎn)是處理靜態(tài)很給力,Apache的特點(diǎn)是處理動(dòng)態(tài)很穩(wěn)定,兩者結(jié)合起來(lái)便是LNMPA,nginx處理前端,apache處理后端,這樣處理靜態(tài)會(huì)很快,處理動(dòng)態(tài)會(huì)很穩(wěn)定。當(dāng)我以為安裝完成以后便萬(wàn)事大吉,不料更新網(wǎng)站的時(shí)候卻出現(xiàn)504 Gateway time-out;起初還以為這是偶然,多次嘗試后依然出現(xiàn)這樣的情況,因此才決定查找解決方法。

LNMP面對(duì)504 Gateway time-out

因?yàn)?04 Gateway time-out是Nginx的專屬錯(cuò)誤,因此起初我以為是nginx配置出錯(cuò),查找網(wǎng)上的教程,找到相應(yīng)的解決方法,下面簡(jiǎn)單說(shuō)說(shuō)LNMP面對(duì)此種情況的解決方案。Nginx出現(xiàn)這樣的錯(cuò)誤,是因?yàn)閷?duì)PHP-CGI進(jìn)程數(shù)限制得太小,面對(duì)更新網(wǎng)站這類操作,很可能出現(xiàn)進(jìn)程不足而超時(shí)的情況,因此要修改兩處涉及到處理時(shí)間的文件。

首先是nginx.conf文件,這個(gè)文件在/nginx/conf/nginx.conf,打開(kāi)以后,主要修改前面幾個(gè)時(shí)間,建議修改為120秒以上。至于用什么工具修改,推薦在線命令行編輯;或者用winscp下載下來(lái),用Dreamweaver修改。

fastcgi_connect_timeout 300s;

fastcgi_send_timeout 300s;

fastcgi_read_timeout 300s;

fastcgi_buffer_size 128k;

fastcgi_buffers 8 128k;#8 128

fastcgi_busy_buffers_size 256k;

fastcgi_temp_file_write_size 256k;

其次要修改php-fpm.conf文件,這個(gè)文件在/php-5.2.17/etc/php-fpm.conf,不同的一鍵安裝包位置有所不同,反正找找php安裝以后文件下面的etc文件夾即可,在線編輯或下載下來(lái)用Dreamweaver編輯。

進(jìn)入文件后搜索”max_children”這是php-cgi進(jìn)程數(shù),一個(gè)進(jìn)程占20M~30M內(nèi)存,按自己的VPS或云主機(jī)內(nèi)存進(jìn)行計(jì)算,好比512M內(nèi)存,推薦設(shè)置為18即可;另外搜索”request_terminate_timeout”,這是超時(shí)時(shí)間,若php程序要長(zhǎng)時(shí)間運(yùn)作,那么設(shè)置時(shí)間大一點(diǎn)會(huì)比較好,好比設(shè)置為120秒,單位默認(rèn)是秒,或者寫(xiě)成120同樣可以。

LNMPA遇到504 Gateway time-out

當(dāng)我按照Nginx的解決方法設(shè)置,很快設(shè)置成功,不過(guò)依然會(huì)出現(xiàn)504 Gateway time-out,這時(shí)我直接切換為L(zhǎng)NMP組合,發(fā)現(xiàn)不再遇到504 Gateway time-out錯(cuò)誤,這說(shuō)明設(shè)置已經(jīng)生效;為什么還會(huì)出現(xiàn)這樣的錯(cuò)誤呢?

經(jīng)過(guò)大量的資料查找,終于發(fā)現(xiàn)這是Nginx與Apache通信時(shí)間設(shè)置問(wèn)題,當(dāng)用戶發(fā)出php腳本執(zhí)行請(qǐng)求,nginx不會(huì)執(zhí)行php,會(huì)把這個(gè)問(wèn)題留給后臺(tái)的apache,nginx會(huì)等待一段時(shí)間,apache可以在等待時(shí)間內(nèi)處理php腳本請(qǐng)求,若未處理完,nginx便已未收到數(shù)據(jù)請(qǐng)求而返回504 Gateway time-out錯(cuò)誤,實(shí)際情況是apache依然會(huì)在后臺(tái)處理完php腳本,只是前臺(tái)返回錯(cuò)誤。

解決方法是修改nginx與apche通信時(shí)間,具體是配置proxy.conf,這個(gè)文件在/nginx/conf/下面,名字可能會(huì)有變化,好比有的安裝包是laproxy.conf,反正是**proxy.conf文件。

proxy_connect_timeout 60;

proxy_send_timeout 600;

proxy_read_timeout 90;

proxy_buffer_size 128k;

proxy_buffers 8 128k;

proxy_busy_buffers_size 256k;

proxy_temp_file_write_size 100m;

第一項(xiàng)是連接時(shí)間,前端連接后端時(shí)間,60s以內(nèi)即可,第二個(gè)是發(fā)送時(shí)間,允許后端返回?cái)?shù)據(jù)的時(shí)間,90s以內(nèi)即可,第三個(gè)時(shí)間是讀寫(xiě)時(shí)間,這是前端等待后端處理時(shí)間,這是導(dǎo)致504 Gateway time-out的根本原因,出現(xiàn)這個(gè)錯(cuò)誤,說(shuō)明這個(gè)值太小,推薦不小于600s,服務(wù)器越差,那么設(shè)置得更長(zhǎng),保證處理完畢。

當(dāng)我把這個(gè)文件設(shè)置好,重啟nginx和apache,再次更新文章,已經(jīng)不會(huì)遇到這類錯(cuò)誤,說(shuō)明出錯(cuò)原因不是nginx,而是前段和后端的通信時(shí)間太短。另外,nginx還會(huì)有502錯(cuò)誤,實(shí)際上原理是差不多的,同樣設(shè)置上面這部分文件,LNMPA組合依然是設(shè)置前后端的通信時(shí)間。

關(guān)鍵詞:LNMPA

閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!

  • 0 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視