LNMPA遇到504 Gateway time-out錯誤的解決方法
Nginx的特點是處理靜(jìng)態很給力,Apache的特點是處理動態很穩定,兩者結(jié)合起來便是LNMPA,nginx處理前端,apache處理後端,這樣處理靜態會(huì)很快,處理動態會很穩定。當我以(yǐ)為安裝完成以後(hòu)便萬事大吉,不料更新網站的時候(hòu)卻出現504 Gateway time-out;起初還(hái)以(yǐ)為這(zhè)是偶然,多次嚐試後依然出現這樣的情(qíng)況,因此才決定查找解決方法。
LNMP麵對504 Gateway time-out
因為504 Gateway time-out是Nginx的專屬錯誤,因此起初我以為是(shì)nginx配置(zhì)出錯,查找網上的教程,找到(dào)相應的解決方法,下麵簡單(dān)說說LNMP麵對此種情(qíng)況的解決方案。Nginx出現這樣的錯誤,是因為對(duì)PHP-CGI進程數(shù)限(xiàn)製(zhì)得太(tài)小,麵對更新網站這類操作,很可能出現進程不足而超時的情況(kuàng),因此要修改兩處涉及到處理(lǐ)時間的文件。
首先是(shì)nginx.conf文件,這個(gè)文(wén)件在/nginx/conf/nginx.conf,打開以後(hòu),主要修(xiū)改前麵(miàn)幾個時(shí)間,建議(yì)修改為120秒以上。至於(yú)用什麽(me)工具修改(gǎi),推薦在線命令行編輯;或者用(yòng)winscp下載下來,用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文件,這個文(wén)件在/php-5.2.17/etc/php-fpm.conf,不同的一鍵安裝包位置有所不同,反正找找php安裝以後文件下麵的etc文件(jiàn)夾即可,在線編輯或下載下來(lái)用Dreamweaver編輯。
進入文件後搜索”max_children”這是(shì)php-cgi進程數(shù),一個(gè)進程占20M~30M內存,按自己的(de)VPS或雲主機內存(cún)進(jìn)行計算,好比512M內存,推薦設置為18即可;另外(wài)搜索”request_terminate_timeout”,這(zhè)是超時時間,若php程序要長時間(jiān)運作,那麽設(shè)置時間大一點會(huì)比(bǐ)較好,好比設置為120秒,單位默認是秒,或者寫成120同樣可以。
LNMPA遇到504 Gateway time-out
當我按照Nginx的解決方法設置,很快設(shè)置成功,不過依然會出現504 Gateway time-out,這時我直接切換為LNMP組合(hé),發(fā)現不再(zài)遇到504 Gateway time-out錯誤,這說明設置已經生效;為什麽還會(huì)出(chū)現(xiàn)這樣的錯誤呢?
經過大量的資料查(chá)找,終於發現這是Nginx與Apache通信時間(jiān)設(shè)置問題,當用戶發出php腳(jiǎo)本執行請求,nginx不會執行(háng)php,會把這個問題留給後台的(de)apache,nginx會等待一段時間,apache可以在等待時間內處理php腳本請求,若未處理完,nginx便已未收到數(shù)據請求而返回504 Gateway time-out錯誤,實際情況(kuàng)是apache依然(rán)會在後台處理完php腳本(běn),隻是前台(tái)返回錯誤。
解決方法(fǎ)是修改nginx與apche通信時間,具體是配置proxy.conf,這個文件在/nginx/conf/下麵(miàn),名字可能(néng)會有(yǒu)變化,好比有的安裝包是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;
第一項是連接時間,前端連接後端時間,60s以內即可,第二個是發送時間,允許後(hòu)端返回數據的時間,90s以內即可,第(dì)三個(gè)時間(jiān)是讀寫(xiě)時間,這是前端等待(dài)後端處理時間,這(zhè)是導致(zhì)504 Gateway time-out的根本原因(yīn),出現(xiàn)這(zhè)個(gè)錯(cuò)誤,說明這個值太小,推薦(jiàn)不(bú)小於600s,服務器越差,那麽設置得更長,保證處理完畢。
當我(wǒ)把這個文件設置好,重啟nginx和apache,再次更新文(wén)章,已經不會遇(yù)到這類錯誤,說明出錯原因不(bú)是nginx,而是前段和後端的(de)通信時間太短。另外,nginx還會有502錯誤,實際上原理是差不多的,同樣設置上麵這部分文件,LNMPA組合依然是設置前後端的通信時間。
關鍵詞:LNMPA
閱讀本文後您(nín)有什麽感想? 已有 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0