nginx做為HTTP服務器,有以下幾項基本特性:
處理靜態文件,索引文件以及自動索引;打開文件描述符緩沖.
無緩存的反向代理加速,簡單的負載均衡和容錯.
FastCGI,簡單的負載均衡和容錯.
模塊化的結構。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服務器處理單頁中存在的多個SSI,則這項處理可以并行運行,而不需要相互等待。
Nginx專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率。它支持內核ePoll模型,能經受高負載的考驗,有報告表明能支持高達 50,000個并發連接數。
Nginx具有很高的穩定性。其它HTTP服務器,當遇到訪問的峰值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啟服務器。例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術,使得它的CPU與內存占用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只占2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。就穩定性而言,nginx比lighthttpd更勝一籌。
然而,如果nginx被攻擊或者訪問量突然變大,nginx同樣會因為負載變高或者內存不夠用導致服務器宕機,最終導致站點無法訪問。今天要談到的解決方法來自淘寶開發的模塊nginx-http-sysguard,主要用于當負載和內存達到一定的閥值之時,會執行相應的動作,比如直接返回503,504或者其他的.一直等到內存或者負載回到閥值的范圍內,站點恢復可用。簡單的說,這幾個模塊是讓nginx有個緩沖時間,緩緩.
1. 安裝nginx sysguard模塊
1.1 下載文件
# wget http://nginx.org/download/nginx-1.4.2.tar.gz# wget https://github.com/alibaba/nginx-http-sysguard/archive/master.zip /-O nginx-http-sysguard-master.zip# unzip nginx-http-sysguard-master.zip# tar -xzvf nginx-1.4.2.tar.gz
1.2 打sysgrard補丁
這邊沒找到nginx-1.4.2對應的補丁,只有1.2.9和1.3.9的,索性試試1.3.9的吧,應該差不多.
# cd nginx-1.4.2# patch -p1 < ../nginx-http-sysguard-master/nginx_sysguard_1.3.9.patch
1.3 安裝nginx
# ./configure --prefix=/usr/local/nginx-1.4.2 /--with-http_stub_status_module --add-module=../nginx-http-sysguard# make# make install
2. sysguard指令
語法: sysguard [on | off]
默認值: sysguard off
配置段: http, server, location
開關模塊
語法:
sysguard_load load=number [action=/url]
默認值: none
配置段: http, server, location
指定負載閥值,當系統的負載超過這個值,所有的請求都會被重定向到action定義的uri請求中.如果沒有定義URL action沒有定義,那么服務器直接返回503
新聞熱點
疑難解答