Netty高級(jí)功能(五):IoT百萬(wàn)長(zhǎng)連接性能調(diào)優(yōu)

隨著車聯(lián)網(wǎng)似将、智能家居获黔、智慧城市等業(yè)務(wù)的發(fā)展,IoT進(jìn)入了飛速發(fā)展期在验。由于要接入海量的硬件設(shè)備和傳感器玷氏,且協(xié)議多樣化,同時(shí)還要在極短的時(shí)間內(nèi)處理大量的數(shù)據(jù)腋舌,所以對(duì)服務(wù)端的協(xié)議接入和處理能力要求極高盏触。

1、海量長(zhǎng)連接接入面臨的挑戰(zhàn)

當(dāng)客戶端的并發(fā)連接數(shù)達(dá)到數(shù)十萬(wàn)或者數(shù)百萬(wàn)時(shí)块饺,系統(tǒng)一個(gè)較小的抖動(dòng)就會(huì)導(dǎo)致很嚴(yán)重的后果赞辩,例如服務(wù)端的GC,導(dǎo)致應(yīng)用暫停(STW)的GC持續(xù)幾秒授艰,就會(huì)導(dǎo)致海量的設(shè)備端設(shè)備掉線或者消息積壓辨嗽,一旦系統(tǒng)恢復(fù),會(huì)有海量的設(shè)備接入或者海量的數(shù)據(jù)發(fā)送淮腾,很可能瞬間就把服務(wù)器沖垮糟需。

IoT設(shè)備接入通常來說,有如下特點(diǎn):

  • 使用的網(wǎng)絡(luò)主要是移動(dòng)網(wǎng)絡(luò)谷朝,網(wǎng)絡(luò)質(zhì)量不穩(wěn)定洲押,例如在一些偏遠(yuǎn)地區(qū)、丘陵地帶等信號(hào)很差圆凰,網(wǎng)絡(luò)容易閃斷杈帐;
  • 海量的端測(cè)設(shè)備接入,而且通常使用長(zhǎng)連接专钉,服務(wù)端的壓力很大
  • 不穩(wěn)定挑童,消息丟失,重復(fù)發(fā)送驶沼,延遲送達(dá)炮沐,過期發(fā)送時(shí)有發(fā)生
  • 協(xié)議不統(tǒng)一,有各種私有協(xié)議回怜,開發(fā)和測(cè)試成本較高

要想實(shí)現(xiàn)海量設(shè)備的接入大年,需要對(duì)操作系統(tǒng)相關(guān)參數(shù)、Netty框架玉雾、JVM GC參數(shù)翔试,甚至業(yè)務(wù)代碼針對(duì)性的優(yōu)化,各種優(yōu)化要素互相影響复旬,設(shè)置或者組合不當(dāng)就容易導(dǎo)致性能問題垦缅,這也是服務(wù)端實(shí)現(xiàn)海量設(shè)備接入的最大挑戰(zhàn)。

2驹碍、操作系統(tǒng)參數(shù)調(diào)優(yōu)

要實(shí)現(xiàn)百萬(wàn)級(jí)的長(zhǎng)連接接入壁涎,首先需要對(duì)服務(wù)端的操作系統(tǒng)參數(shù)進(jìn)行性能優(yōu)化凡恍,如果保持出廠的默認(rèn)設(shè)置,性能是無(wú)法滿足業(yè)務(wù)需求怔球。

1嚼酝、文件描述符
  • 設(shè)置系統(tǒng)最大文件句柄數(shù)
//查看
cat  /proc/sys/fs/file-max
//修改
在 /etc/sysctl.conf 插入 fs.file-max = 1000000
//配置生效
sysctl -p
  • 設(shè)置單進(jìn)程打開的最大句柄數(shù)
image.png
2、TCP/IP相關(guān)參數(shù)
image.png
image.png
3竟坛、多網(wǎng)卡隊(duì)列和軟中斷
image.png

3闽巩、Netty性能調(diào)優(yōu)

1、設(shè)置合理的線程數(shù)
  • boss線程池優(yōu)化
    對(duì)于Netty服務(wù)端担汤,通常只需要啟動(dòng)一個(gè)監(jiān)聽端口用于端側(cè)設(shè)備接入涎跨,但是如果集群實(shí)例較少,甚至是單機(jī)部署崭歧,那么在短時(shí)間內(nèi)大量設(shè)備接入時(shí)隅很,需要對(duì)服務(wù)端的監(jiān)聽方式和線程模型做優(yōu)化,即服務(wù)端監(jiān)聽多個(gè)端口率碾,利用主從Reactor線程模型外构。由于同時(shí)監(jiān)聽了多個(gè)端口,每個(gè)ServerSocketChannel都對(duì)應(yīng)一個(gè)獨(dú)立的Acceptor線程播掷,這樣就能并行處理,加速端側(cè)設(shè)備的接人速度撼班,減少端側(cè)設(shè)備的連接超時(shí)失敗率歧匈,提高單節(jié)點(diǎn)服務(wù)端的處理性能。

  • work線程池優(yōu)化(I/O工作線程池)
    對(duì)于I/O工作線程池的優(yōu)化砰嘁,可以先采用系統(tǒng)默認(rèn)值(cpu內(nèi)核數(shù)*2)進(jìn)行性能測(cè)試件炉,在性能測(cè)試過程中采集I/O線程的CPU占用大小,看是否存在瓶頸矮湘,具體策略如下:

image.png
image.png
2斟冕、心跳優(yōu)化
image.png
image.png
image.png

心跳檢測(cè)周期通常不要超過60s,心跳檢測(cè)超時(shí)通常為心跳檢測(cè)周期的2倍

3缅阳、接收和發(fā)送緩沖區(qū)調(diào)優(yōu)
image.png
4磕蛇、合理使用內(nèi)存池
image.png
image.png
5、防止I/O線程被意外阻塞

通常情況下十办,我們是不能再Netty的I/O線程上做執(zhí)行時(shí)間不可控的操作秀撇,例如訪問數(shù)據(jù)庫(kù),調(diào)用第三方服務(wù)等向族。

image.png
6呵燕、I/O線程與業(yè)務(wù)線程分離
image.png
7、針對(duì)端測(cè)并發(fā)連接數(shù)的流控

無(wú)論服務(wù)端的性能優(yōu)化到多少件相,都需要考慮流控功能再扭,當(dāng)資源成為瓶頸氧苍,或者遇到端側(cè)設(shè)備的大量接入,

image.png

4泛范、JVM相關(guān)性能調(diào)優(yōu)

image.png
image.png
image.png
image.png
image.png
image.png

總結(jié):以上這些調(diào)優(yōu),都屬于小方法敦跌,小技巧澄干,如果系統(tǒng)對(duì)性能要求很高,最優(yōu)的還是采用分布式集群的方式來提升整個(gè)服務(wù)端的處理能力柠傍。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末麸俘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子惧笛,更是在濱河造成了極大的恐慌从媚,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件患整,死亡現(xiàn)場(chǎng)離奇詭異拜效,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)各谚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門紧憾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人昌渤,你說我怎么就攤上這事赴穗。” “怎么了膀息?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵般眉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我潜支,道長(zhǎng)甸赃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任冗酿,我火速辦了婚禮埠对,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘已烤。我一直安慰自己鸠窗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布胯究。 她就那樣靜靜地躺著稍计,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裕循。 梳的紋絲不亂的頭發(fā)上臣嚣,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天净刮,我揣著相機(jī)與錄音,去河邊找鬼硅则。 笑死淹父,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怎虫。 我是一名探鬼主播暑认,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼大审!你這毒婦竟也來了蘸际?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤徒扶,失蹤者是張志新(化名)和其女友劉穎粮彤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姜骡,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡导坟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了圈澈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惫周。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖康栈,靈堂內(nèi)的尸體忽然破棺而出闯两,到底是詐尸還是另有隱情,我是刑警寧澤谅将,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站重慢,受9級(jí)特大地震影響饥臂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜似踱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一隅熙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧核芽,春花似錦囚戚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哮独,卻和暖如春拳芙,著一層夾襖步出監(jiān)牢的瞬間察藐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工舟扎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留分飞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓睹限,卻偏偏與公主長(zhǎng)得像譬猫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羡疗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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