Netty挖掘機(jī)(五)底層連接配置之ChannelOption

上一篇主要講了一個(gè)Netty的服務(wù)端程序的實(shí)現(xiàn)流程床佳。

這次我們來講一下Netty的TCP連接的底層參數(shù)配置

ChannelOption套接字配置

Netty中關(guān)于套接字選項(xiàng)的設(shè)置耐版,在io.netty.channel.ChannelOption這個(gè)類中。

參數(shù) 解釋
SO_BROADCAST 對應(yīng)套接字層的套接字:SO_BROADCAST景殷,將消息發(fā)送到廣播地址脐瑰。
如果目標(biāo)中指定的接口支持廣播數(shù)據(jù)包省撑,則啟用此選項(xiàng)可讓應(yīng)用程序發(fā)送廣播消息匾荆。
SO_KEEPALIVE 對應(yīng)套接字層的套接字:SO_KEEPALIVE,保持連接粒督。
在空閑套接字上發(fā)送探測陪竿,以驗(yàn)證套接字是否仍處于活動狀態(tài)。
SO_SNDBUF 對應(yīng)套接字層的套接字:SO_SNDBUF屠橄,設(shè)置發(fā)送緩沖區(qū)的大小族跛。
SO_RCVBUF 對應(yīng)套接字層的套接字:SO_RCVBUF,獲取接收緩沖區(qū)的大小锐墙。
SO_REUSEADDR 對應(yīng)套接字層的套接字:SO_REUSEADDR礁哄,本地地址復(fù)用。
啟用此選項(xiàng)允許綁定已使用的本地地址溪北。
SO_LINGER 對應(yīng)套接字層的套接字:SO_LINGER桐绒,延遲關(guān)閉連接。
啟用此選項(xiàng)之拨,在調(diào)用close時(shí)如果存在未發(fā)送的數(shù)據(jù)時(shí)茉继,在close期間將阻止調(diào)用應(yīng)用程序,直到數(shù)據(jù)被傳輸或連接超時(shí)蚀乔。
SO_BACKLOG 對應(yīng)TCP/IP協(xié)議中<font color=red>backlog</font>參數(shù)烁竭,<font color=red>backlog</font>即連接隊(duì)列,設(shè)置TCP中的連接隊(duì)列大小吉挣。如果隊(duì)列滿了颖变,會發(fā)送一個(gè)ECONNREFUSED錯(cuò)誤信息給C端,即“ Connection refused”听想。
SO_TIMEOUT 等待客戶連接的超時(shí)時(shí)間腥刹。
IP_TOS 對應(yīng)套接字層的套接字:IP_TOS,在IP標(biāo)頭中設(shè)置服務(wù)類型(TOS)和優(yōu)先級汉买。
IP_MULTICAST_ADDR 對應(yīng)IP層的套接字選項(xiàng):IP_MULTICAST_IF衔峰,設(shè)置應(yīng)發(fā)送多播數(shù)據(jù)報(bào)的傳出接口。
IP_MULTICAST_IF 對應(yīng)IP層的套接字選項(xiàng):IP_MULTICAST_IF2蛙粘,設(shè)置應(yīng)發(fā)送多播數(shù)據(jù)報(bào)的IPV6傳出接口垫卤。
IP_MULTICAST_TTL 對應(yīng)IP層的套接字選項(xiàng):IP_MULTICAST_TTL,在傳出的 多播數(shù)據(jù)報(bào)的IP頭中設(shè)置生存時(shí)間(TTL)出牧。
IP_MULTICAST_LOOP_DISABLED 取消 指定應(yīng)將 傳出的多播數(shù)據(jù)報(bào)的副本 回傳到發(fā)送主機(jī)穴肘,只要它是多播組的成員即可。
TCP_NODELAY 對應(yīng)TCP層的套接字選項(xiàng):TCP_NODELAY舔痕,指定TCP是否遵循<font color=#35b998>Nagle算法</font> 決定何時(shí)發(fā)送數(shù)據(jù)评抚。Nagle算法代表通過減少必須發(fā)送包的個(gè)數(shù)來增加網(wǎng)絡(luò)軟件系統(tǒng)的效率豹缀。即盡可能發(fā)送大塊數(shù)據(jù)避免網(wǎng)絡(luò)中充斥著大量的小數(shù)據(jù)塊。如果要追求高實(shí)時(shí)性慨代,需要設(shè)置關(guān)閉Nagle算法邢笙;如果需要追求減少網(wǎng)絡(luò)交互次數(shù),則設(shè)置開啟Nagle算法侍匙。

ChannelOption通用配置

參數(shù) 解釋
ALLOCATOR ByteBuf的分配器氮惯,默認(rèn)值為ByteBufAllocator.DEFAULT。
RCVBUF_ALLOCATOR 用于Channel分配接受Buffer的分配器想暗,默認(rèn)值為AdaptiveRecvByteBufAllocator.DEFAULT妇汗,是一個(gè)自適應(yīng)的接受緩沖區(qū)分配器,能根據(jù)接受到的數(shù)據(jù)自動調(diào)節(jié)大小说莫⊙罴可選值為FixedRecvByteBufAllocator,固定大小的接受緩沖區(qū)分配器唬滑。
MESSAGE_SIZE_ESTIMATOR 消息大小估算器告唆,默認(rèn)為DefaultMessageSizeEstimator.DEFAULT棺弊。估算ByteBuf晶密、ByteBufHolder和FileRegion的大小,其中ByteBuf和ByteBufHolder為實(shí)際大小模她,F(xiàn)ileRegion估算值為0稻艰。該值估算的字節(jié)數(shù)在計(jì)算水位時(shí)使用,F(xiàn)ileRegion為0可知FileRegion不影響高低水位侈净。
CONNECT_TIMEOUT_MILLIS 連接超時(shí)毫秒數(shù)尊勿,默認(rèn)值30000毫秒即30秒。
WRITE_SPIN_COUNT 一個(gè)Loop寫操作執(zhí)行的最大次數(shù)畜侦,默認(rèn)值為16元扔。也就是說,對于大數(shù)據(jù)量的寫操作至多進(jìn)行16次旋膳,如果16次仍沒有全部寫完數(shù)據(jù)澎语,此時(shí)會提交一個(gè)新的寫任務(wù)給EventLoop,任務(wù)將在下次調(diào)度繼續(xù)執(zhí)行验懊。這樣擅羞,其他的寫請求才能被響應(yīng)不會因?yàn)閱蝹€(gè)大數(shù)據(jù)量寫請求而耽誤。
WRITE_BUFFER_WATER_MARK
ALLOW_HALF_CLOSURE 一個(gè)連接的遠(yuǎn)端關(guān)閉時(shí)本地端是否關(guān)閉义图,默認(rèn)值為False减俏。值為False時(shí),連接自動關(guān)閉碱工;為True時(shí)娃承,觸發(fā)ChannelInboundHandler的userEventTriggered()方法奏夫,事件為ChannelInputShutdownEvent。
AUTO_READ 自動讀取草慧,默認(rèn)值為True桶蛔。Netty只在必要的時(shí)候才設(shè)置關(guān)心相應(yīng)的I/O事件。對于讀操作漫谷,需要調(diào)用channel.read()設(shè)置關(guān)心的I/O事件為OP_READ仔雷,這樣若有數(shù)據(jù)到達(dá)才能讀取以供用戶處理。該值為True時(shí)舔示,每次讀操作完畢后會自動調(diào)用channel.read()碟婆,從而有數(shù)據(jù)到達(dá)便能讀取惕稻;否則竖共,需要用戶手動調(diào)用channel.read()。需要注意的是:當(dāng)調(diào)用config.setAutoRead(boolean)方法時(shí)俺祠,如果狀態(tài)由false變?yōu)閠rue公给,將會調(diào)用channel.read()方法讀取數(shù)據(jù);由true變?yōu)閒alse蜘渣,將調(diào)用config.autoReadCleared()方法終止數(shù)據(jù)讀取淌铐。
AUTO_CLOSE
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蔫缸,隨后出現(xiàn)的幾起案子腿准,更是在濱河造成了極大的恐慌,老刑警劉巖拾碌,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吐葱,死亡現(xiàn)場離奇詭異,居然都是意外死亡校翔,警方通過查閱死者的電腦和手機(jī)弟跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來防症,“玉大人孟辑,你說我怎么就攤上這事「嫦#” “怎么了扑浸?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長燕偶。 經(jīng)常有香客問我喝噪,道長,這世上最難降的妖魔是什么指么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任酝惧,我火速辦了婚禮榴鼎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晚唇。我一直安慰自己巫财,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布哩陕。 她就那樣靜靜地躺著平项,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悍及。 梳的紋絲不亂的頭發(fā)上闽瓢,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機(jī)與錄音心赶,去河邊找鬼扣讼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缨叫,可吹牛的內(nèi)容都是我干的椭符。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼耻姥,長吁一口氣:“原來是場噩夢啊……” “哼销钝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咏闪,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤曙搬,失蹤者是張志新(化名)和其女友劉穎摔吏,沒想到半個(gè)月后鸽嫂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡征讲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年据某,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诗箍。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡癣籽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出滤祖,到底是詐尸還是另有隱情筷狼,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布匠童,位于F島的核電站埂材,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏汤求。R本人自食惡果不足惜俏险,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一严拒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧竖独,春花似錦裤唠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至竞膳,卻和暖如春劈彪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顶猜。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工沧奴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人长窄。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓滔吠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挠日。 傳聞我的和親對象是個(gè)殘疾皇子疮绷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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