国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > Nginx > 正文

詳解Nginx服務(wù)器中配置Sysguard模塊預(yù)防高負(fù)載的方案

2024-08-30 12:28:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了詳解Nginx服務(wù)器中配置Sysguard模塊預(yù)防高負(fù)載的方案,該模塊由阿里巴巴的團(tuán)隊(duì)開(kāi)發(fā),能夠設(shè)置負(fù)載閥值,比較強(qiáng)大,需要的朋友可以參考下
 

nginx做為HTTP服務(wù)器,有以下幾項(xiàng)基本特性:

處理靜態(tài)文件,索引文件以及自動(dòng)索引;打開(kāi)文件描述符緩沖.

無(wú)緩存的反向代理加速,簡(jiǎn)單的負(fù)載均衡和容錯(cuò).

FastCGI,簡(jiǎn)單的負(fù)載均衡和容錯(cuò).

模塊化的結(jié)構(gòu)。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等f(wàn)ilter。如果由FastCGI或其它代理服務(wù)器處理單頁(yè)中存在的多個(gè)SSI,則這項(xiàng)處理可以并行運(yùn)行,而不需要相互等待。

Nginx專(zhuān)為性能優(yōu)化而開(kāi)發(fā),性能是其最重要的考量,實(shí)現(xiàn)上非常注重效率。它支持內(nèi)核ePoll模型,能經(jīng)受高負(fù)載的考驗(yàn),有報(bào)告表明能支持高達(dá) 50,000個(gè)并發(fā)連接數(shù)。

Nginx具有很高的穩(wěn)定性。其它HTTP服務(wù)器,當(dāng)遇到訪(fǎng)問(wèn)的峰值,或者有人惡意發(fā)起慢速連接時(shí),也很可能會(huì)導(dǎo)致服務(wù)器物理內(nèi)存耗盡頻繁交換,失去響應(yīng),只能重啟服務(wù)器。例如當(dāng)前apache一旦上到200個(gè)以上進(jìn)程,web響應(yīng)速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術(shù),使得它的CPU與內(nèi)存占用率非常低。nginx官方表示保持10,000個(gè)沒(méi)有活動(dòng)的連接,它只占2.5M內(nèi)存,所以類(lèi)似DOS這樣的攻擊對(duì)nginx來(lái)說(shuō)基本上是毫無(wú)用處的。就穩(wěn)定性而言,nginx比lighthttpd更勝一籌。

然而,如果nginx被攻擊或者訪(fǎng)問(wèn)量突然變大,nginx同樣會(huì)因?yàn)樨?fù)載變高或者內(nèi)存不夠用導(dǎo)致服務(wù)器宕機(jī),最終導(dǎo)致站點(diǎn)無(wú)法訪(fǎng)問(wèn)。今天要談到的解決方法來(lái)自淘寶開(kāi)發(fā)的模塊nginx-http-sysguard,主要用于當(dāng)負(fù)載和內(nèi)存達(dá)到一定的閥值之時(shí),會(huì)執(zhí)行相應(yīng)的動(dòng)作,比如直接返回503,504或者其他的.一直等到內(nèi)存或者負(fù)載回到閥值的范圍內(nèi),站點(diǎn)恢復(fù)可用。簡(jiǎn)單的說(shuō),這幾個(gè)模塊是讓nginx有個(gè)緩沖時(shí)間,緩緩.
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補(bǔ)丁
這邊沒(méi)找到nginx-1.4.2對(duì)應(yīng)的補(bǔ)丁,只有1.2.9和1.3.9的,索性試試1.3.9的吧,應(yīng)該差不多.

# 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指令
語(yǔ)法: sysguard [on | off]
默認(rèn)值: sysguard off
配置段: http, server, location
開(kāi)關(guān)模塊
語(yǔ)法:

sysguard_load load=number [action=/url]

默認(rèn)值: none
配置段: http, server, location
指定負(fù)載閥值,當(dāng)系統(tǒng)的負(fù)載超過(guò)這個(gè)值,所有的請(qǐng)求都會(huì)被重定向到action定義的uri請(qǐng)求中.如果沒(méi)有定義URL action沒(méi)有定義,那么服務(wù)器直接返回503
語(yǔ)法:

sysguard_mem swapratio=ratio% [action=/url]

默認(rèn)值: none
配置段: http, server, location
定義交換分區(qū)使用的閥值,如果交換分區(qū)使用超過(guò)這個(gè)閥值,那么后續(xù)的請(qǐng)求全部被重定向到action定義的uri請(qǐng)求中.如果沒(méi)有定義URL action沒(méi)有定義,那么服務(wù)器直接返回503
語(yǔ)法:

sysguard_interval time

默認(rèn)值: sysguard_interval 1s
配置段: http, server, location
定義系統(tǒng)信息更新的頻率,默認(rèn)1秒.
語(yǔ)法:

sysguard_log_level info | notice | warn | error

默認(rèn)值: sysguard_log_level error
配置段: http, server, location
定義sysguard的日志級(jí)別
3. sysguard使用實(shí)例
3.1 nginx配置

server {  listen    80;  server_name m.survivalescaperooms.com www.heytool.com;  access_log /data/logs/nginx/m.survivalescaperooms.com.access.log main;   index index.html index.php index.html;  root /data/site/m.survivalescaperooms.com;   sysguard on;  # 為了方便測(cè)試,load閥值為0.01,平時(shí)大家一般都在5或10+  sysguard_load load=0.01 action=/loadlimit;   sysguard_mem swapratio=20% action=/swaplimit;   location / {   }   location /loadlimit {    return 503;  }   location /swaplimit {    return 503;  }}

3.2 測(cè)試
負(fù)載OK的情況下,訪(fǎng)問(wèn)nginx

# uptime 
 16:23:37 up 6 days, 8:04, 2 users, load average: 0.00, 0.01, 0.05
# curl -I m.survivalescaperooms.com
HTTP/1.1 403 ForbiddenServer: nginxDate: Thu, 03 Oct 2013 16:27:13 GMTContent-Type: text/htmlContent-Length: 162Connection: keep-alive

因?yàn)檎军c(diǎn)下沒(méi)有文件,所以返回了403,實(shí)際上沒(méi)關(guān)系.
負(fù)載超過(guò)閥值的情況下,訪(fǎng)問(wèn)nginx

# uptime 
 16:25:59 up 6 days, 8:06, 2 users, load average: 0.05, 0.04, 0.05
# curl -I m.survivalescaperooms.com
HTTP/1.1 503 Service Temporarily UnavailableServer: nginxDate: Thu, 03 Oct 2013 16:26:19 GMTContent-Type: text/htmlContent-Length: 206Connection: keep-alive

swap超過(guò)閥值的功能我就不再測(cè)試了。大家回家可以自己動(dòng)手測(cè)試一下.
結(jié)束語(yǔ)
在nginx是realserver的情況下,個(gè)人也比較推薦使用這種方法,如果服務(wù)器負(fù)載一旦爬高,一般要比較長(zhǎng)的時(shí)間才能恢復(fù)到正常水平,在采用這個(gè)插件的情況下,負(fù)載達(dá)到閥值,nginx返回503,前段使用故障轉(zhuǎn)移將請(qǐng)求發(fā)往其他服務(wù)器,這臺(tái)服務(wù)器在無(wú)訪(fǎng)問(wèn)的情況下,便能很快的恢復(fù)到正常水平,并且能夠立即投入工作。超過(guò)閥值的服務(wù)器處理請(qǐng)求速度也會(huì)大打折扣,使用這個(gè)模塊,巧妙的將請(qǐng)求發(fā)送到了更快速的服務(wù)器上,在一定程度上避免了訪(fǎng)問(wèn)速度慢的問(wèn)題. 前面說(shuō)的是在集群環(huán)境下,在單點(diǎn)環(huán)境下,用不用大家斟酌一下。



發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 全州县| 衡南县| 蓝田县| 彰武县| 南溪县| 东宁县| 梁河县| 绥棱县| 平阴县| 金川县| 陇川县| 钦州市| 巴中市| 上杭县| 化隆| 乌海市| 台东市| 突泉县| 奈曼旗| 郧西县| 荃湾区| 奉贤区| 永德县| 清水河县| 乐至县| 乾安县| 姜堰市| 钟祥市| 宜州市| 革吉县| 陵水| 同德县| 兴义市| 盐亭县| 崇仁县| 清水县| 湾仔区| 开原市| 新竹市| 丹寨县| 公安县|