Nginx并發(fā)請(qǐng)求過高導(dǎo)致請(qǐng)求超時(shí)的問題

一羡儿、問題

昨晚(2020-07-09)八點(diǎn)左右事示,生產(chǎn)運(yùn)行的APP大面積上報(bào)請(qǐng)求超時(shí)早像,無法獲取數(shù)據(jù),顯示網(wǎng)絡(luò)連接錯(cuò)誤等肖爵。經(jīng)過簡(jiǎn)單測(cè)試卢鹦,發(fā)現(xiàn)并不是如用戶所說的APP完全無法與服務(wù)器通訊,偶爾請(qǐng)求又能正常返回劝堪。
登錄后臺(tái)后法挨,直接查看系統(tǒng)連接數(shù),發(fā)現(xiàn)并發(fā)數(shù)較高幅聘,等待處理的請(qǐng)求也很多,造成了網(wǎng)絡(luò)阻塞窃植;

$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

返回結(jié)果一般如下:
CLOSED:無連接是活動(dòng)的或正在進(jìn)行
LISTEN:服務(wù)器在等待進(jìn)入呼叫
SYN_RECV:一個(gè)連接請(qǐng)求已經(jīng)到達(dá)帝蒿,等待確認(rèn)
SYN_SENT:應(yīng)用已經(jīng)開始,打開一個(gè)連接
ESTABLISHED:正常數(shù)據(jù)傳輸狀態(tài)
FIN_WAIT1:應(yīng)用說它已經(jīng)完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時(shí)嘗試關(guān)閉
TIME_WAIT:另一邊已初始化一個(gè)釋放
LAST_ACK:等待所有分組死掉

二巷怜、處理

分析可能是有類似爬蟲的程序在對(duì)我們的系統(tǒng)進(jìn)行掃描葛超。由于系統(tǒng)并沒有特別高并發(fā)的需求(小眾應(yīng)用)暴氏,所以沒有所謂的高并發(fā)架構(gòu),但應(yīng)用服務(wù)端采用的是Nginx绣张,故決定限制一下限制客戶端的訪問頻次和訪問次數(shù)答渔。

?Nginx可以通過ngx_http_limit_conn_modulengx_http_limit_req_module配置來限制ip在同一時(shí)間段的訪問次數(shù):

ngx_http_limit_conn_module

可以根據(jù)設(shè)定的條件來限定客戶端(單一ip)的并發(fā)訪問,使用limit_conn_zone和limit_conn指令侥涵。

1底瓣、在nginx.conf里的http{}里加上如下代碼:
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

2爬凑、在需要限制并發(fā)數(shù)和下載帶寬的網(wǎng)站配置server{}里加上如下代碼:
limit_conn perip 2;
limit_conn perserver 20;
limit_rate 100k;

參數(shù)明下:
$binary_remote_addr 限制同一客戶端ip地址;
$server_name                限制同一server最大并發(fā)數(shù);
limit_conn                  限制并發(fā)連接數(shù)匹颤;
limit_rate                  限制下載速度;

?

ngx_http_limit_req_module

可以根據(jù)設(shè)定的條件來限定客戶端(單一ip)的訪問頻率撩荣,使用limit_req_zone和limit_req指令凯楔。

1、在nginx.conf里的http{}里加上如下代碼:

#定義一個(gè)名為one的limit_req_zone用來存儲(chǔ)session娶牌,大小是10M內(nèi)存奔浅,  
#以$binary_remote_addr / $server_name 為key,限制平均每秒的請(qǐng)求為10個(gè),
#1m能存儲(chǔ)16000個(gè)狀態(tài)诗良,rete的值必須為整數(shù)汹桦,
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_req_zone $server_name zone=perserver:10m rate=10r/s;

2、在需要限制并發(fā)數(shù)和下載帶寬的網(wǎng)站配置server{}里加上如下代碼:
limit_req zone=perip burst=5 nodelay;   #漏桶數(shù)為5個(gè)累榜,也就是隊(duì)列數(shù)营勤,nodelay:不啟用延遲.
limit_req zone=perserver burst=10;    #限制nginx的處理速率為每秒10個(gè)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市壹罚,隨后出現(xiàn)的幾起案子葛作,更是在濱河造成了極大的恐慌,老刑警劉巖猖凛,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赂蠢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡辨泳,警方通過查閱死者的電腦和手機(jī)虱岂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來菠红,“玉大人第岖,你說我怎么就攤上這事∈运荩” “怎么了蔑滓?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我键袱,道長(zhǎng)燎窘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任蹄咖,我火速辦了婚禮褐健,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澜汤。我一直安慰自己蚜迅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布银亲。 她就那樣靜靜地躺著慢叨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪务蝠。 梳的紋絲不亂的頭發(fā)上拍谐,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音馏段,去河邊找鬼轩拨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛院喜,可吹牛的內(nèi)容都是我干的亡蓉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼喷舀,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼砍濒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起硫麻,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤爸邢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拿愧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杠河,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年浇辜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了券敌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柳洋,死狀恐怖待诅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熊镣,我是刑警寧澤咱士,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布立由,位于F島的核電站,受9級(jí)特大地震影響序厉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毕箍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一弛房、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧而柑,春花似錦文捶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涩澡,卻和暖如春顽耳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妙同。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工射富, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粥帚。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓胰耗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親芒涡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柴灯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容