LNMPA遇到504 Gateway time-out錯誤該如何解決

 轉自:http://www.szbelle.com/article/20812.html php

Nginx 的特色是處理靜態很給力,Apache的特色是處理動態很穩定,二者結合起來即是LNMPA,nginx處理前端,apache處理後端,這樣處理靜態會 很快,處理動態會很穩定。當我覺得安裝完成之後便萬事大吉,不料更新網站的時候卻出現504 Gateway time-out;起初還覺得這是偶然,屢次嘗試後依然出現這樣的狀況,所以才決定查找解決方法。 html

  LNMP面對504 Gateway time-out 前端

  由於504 Gateway time-out是Nginx的專屬錯誤,所以起初我覺得是nginx配置出錯,查找網上的教程,找到相應的解決方法,下面簡單說說LNMP面對此種狀況 的解決方案。Nginx出現這樣的錯誤,是由於對PHP-CGI進程數限制得過小,面對更新網站這類操做,極可能出現進程不足而超時的狀況,所以要修改兩 處涉及處處理時間的文件。 nginx

  首先是nginx.conf文件,這個文件在/nginx/conf/nginx.conf,打開之後,主要修改前面幾個時間,深圳網站建設貝爾利建議修改成120秒以上。至於用什麼工具修改,推薦在線命令行編輯;或者用winscp下載下來,用Dreamweaver修改。 apache

  fastcgi_connect_timeout 300s; 後端

  fastcgi_send_timeout 300s; 服務器

  fastcgi_read_timeout 300s; php-fpm

  fastcgi_buffer_size 128k; 工具

  fastcgi_buffers 8 128k;#8 128 網站

  fastcgi_busy_buffers_size 256k;

  fastcgi_temp_file_write_size 256k;

  其次要修改php-fpm.conf文件,這個文件在/php-5.2.17/etc/php-fpm.conf,不一樣的一鍵安裝包位置有所不一樣,反正找找php安裝之後文件下面的etc文件夾便可,在線編輯或下載下來用Dreamweaver編輯。

  進入文件後搜索」max_children」這是php-cgi進程數,一個進程佔20M~30M內存,按本身的VPS或雲主機內存進行計算,比如 512M內存,推薦設置爲18便可;另外搜索」request_terminate_timeout」,這是超時時間,若php程序要長時間運做,那麼設 置時間大一點會比較好,比如設置爲120秒,單位默認是秒,或者寫成120一樣能夠。

  LNMPA遇到504 Gateway time-out

  當我按照Nginx的解決方法設置,很快設置成功,不過依然會出現504 Gateway time-out,這時我直接切換爲LNMP組合,發現再也不遇到504 Gateway time-out錯誤,這說明設置已經生效;爲何還會出現這樣的錯誤呢?

  通過大量的資料查找,終於發現這是Nginx與Apache通訊時間設置問題,當用戶發出php腳本執行請求,nginx不會執行php,會把這個問 題留給後臺的apache,nginx會等待一段時間,apache能夠在等待時間內處理php腳本請求,若未處理完,nginx便已未收到數據請求而返 回504 Gateway time-out錯誤,實際狀況是apache依然會在後臺處理完php腳本,只是前臺返回錯誤。

  解決方法是修改nginx與apche通訊時間,具體是配置proxy.conf,這個文件在/nginx/conf/下面,名字可能會有變化,比如有的安裝包是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之內便可,第二個是發送時間,容許後端返回數據的時間,90s之內便可,第三個時間是讀寫時間,這是前端 等待後端處理時間,這是致使504 Gateway time-out的根本緣由,出現這個錯誤,說明這個值過小,推薦不小於600s,服務器越差,那麼設置得更長,保證處理完畢。

  當深圳網站建設貝爾利把 這個文件設置好,重啓nginx和apache,再次更新文章,已經不會遇到這類錯誤,說明出錯緣由不是nginx,而是前段和後端的通訊時間過短。另 外,nginx還會有502錯誤,實際上原理是差很少的,一樣設置上面這部分文件,LNMPA組合依然是設置先後端的通訊時間。

相關文章
相關標籤/搜索