精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

TCP 三次握手原理,你真的理解嗎?

開發(fā) 開發(fā)工具 數(shù)據(jù)中心
希望通過本文能夠幫大家理解TCP連接過程中的半連接隊列和全連接隊列的概念、原理和作用,更關(guān)鍵的是有哪些指標可以明確看到這些問題(工程效率幫助強化對理論的理解)。

[[235390]]

問題描述

場景:JAVA的client和server,使用socket通信。server使用NIO。

1.間歇性得出現(xiàn)client向server建立連接三次握手已經(jīng)完成,但server的selector沒有響應(yīng)到這連接。

2.出問題的時間點,會同時有很多連接出現(xiàn)這個問題。

3.selector沒有銷毀重建,一直用的都是一個。

4.程序剛啟動的時候必會出現(xiàn)一些,之后會間歇性出現(xiàn)。

分析問題

正常TCP建連接三次握手過程:

  • 第一步:client 發(fā)送 syn 到server 發(fā)起握手;
  • 第二步:server 收到 syn后回復syn+ack給client;
  • 第三步:client 收到syn+ack后,回復server一個ack表示收到了server的syn+ack(此時client的56911端口的連接已經(jīng)是established)。

從問題的描述來看,有點像TCP建連接的時候全連接隊列(accept隊列,后面具體講)滿了,尤其是癥狀2、4. 為了證明是這個原因,馬上通過 netstat -s | egrep "listen" 去看隊列的溢出統(tǒng)計數(shù)據(jù):    

反復看了幾次之后發(fā)現(xiàn)這個overflowed 一直在增加,那么可以明確的是server上全連接隊列一定溢出了。

接著查看溢出后,OS怎么處理:

tcp_abort_on_overflow 為0表示如果三次握手第三步的時候全連接隊列滿了那么server扔掉client 發(fā)過來的ack(在server端認為連接還沒建立起來)

為了證明客戶端應(yīng)用代碼的異常跟全連接隊列滿有關(guān)系,我先把tcp_abort_on_overflow修改成 1,1表示第三步的時候如果全連接隊列滿了,server發(fā)送一個reset包給client,表示廢掉這個握手過程和這個連接(本來在server端這個連接就還沒建立起來)。

接著測試,這時在客戶端異常中可以看到很多connection reset by peer的錯誤,到此證明客戶端錯誤是這個原因?qū)е碌模ㄟ壿媷乐敗⒖焖僮C明問題的關(guān)鍵點所在)。

于是開發(fā)同學翻看java 源代碼發(fā)現(xiàn)socket 默認的backlog(這個值控制全連接隊列的大小,后面再詳述)是50,于是改大重新跑,經(jīng)過12個小時以上的壓測,這個錯誤一次都沒出現(xiàn)了,同時觀察到 overflowed 也不再增加了。

到此問題解決,簡單來說TCP三次握手后有個accept隊列,進到這個隊列才能從Listen變成accept,默認backlog 值是50,很容易就滿了。滿了之后握手第三步的時候server就忽略了client發(fā)過來的ack包(隔一段時間server重發(fā)握手第二步的syn+ack包給client),如果這個連接一直排不上隊就異常了。

但是不能只是滿足問題的解決,而是要去復盤解決過程,中間涉及到了哪些知識點是我所缺失或者理解不到位的;這個問題除了上面的異常信息表現(xiàn)出來之外,還有沒有更明確地指征來查看和確認這個問題。

深入理解TCP握手過程中建連接的流程和隊列

(圖片來源:http://www.cnxct.com/something-about-phpfpm-s-backlog/)

如上圖所示,這里有兩個隊列:syns queue(半連接隊列);accept queue(全連接隊列)。

三次握手中,在第一步server收到client的syn后,把這個連接信息放到半連接隊列中,同時回復syn+ack給client(第二步);

第三步的時候server收到client的ack,如果這時全連接隊列沒滿,那么從半連接隊列拿出這個連接的信息放入到全連接隊列中,否則按tcp_abort_on_overflow指示的執(zhí)行。

這時如果全連接隊列滿了并且tcp_abort_on_overflow是0的話,server過一段時間再次發(fā)送syn+ack給client(也就是重新走握手的第二步),如果client超時等待比較短,client就很容易異常了。

在我們的os中retry 第二步的默認次數(shù)是2(centos默認是5次):

如果TCP連接隊列溢出,有哪些指標可以看呢?

上述解決過程有點繞,聽起來懵,那么下次再出現(xiàn)類似問題有什么更快更明確的手段來確認這個問題呢?(通過具體的、感性的東西來強化我們對知識點的理解和吸收。)

netstat -s

比如上面看到的 667399 times ,表示全連接隊列溢出的次數(shù),隔幾秒鐘執(zhí)行下,如果這個數(shù)字一直在增加的話肯定全連接隊列偶爾滿了。

ss 命令

上面看到的第二列Send-Q 值是50,表示第三列的listen端口上的全連接隊列最大為50,第一列Recv-Q為全連接隊列當前使用了多少。

全連接隊列的大小取決于:min(backlog, somaxconn) . backlog是在socket創(chuàng)建的時候傳入的,somaxconn是一個os級別的系統(tǒng)參數(shù)。

這個時候可以跟我們的代碼建立聯(lián)系了,比如Java創(chuàng)建ServerSocket的時候會讓你傳入backlog的值:

(來自JDK幫助文檔:https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html)

半連接隊列的大小取決于:max(64,  /proc/sys/net/ipv4/tcp_max_syn_backlog),不同版本的os會有些差異。

我們寫代碼的時候從來沒有想過這個backlog或者說大多時候就沒給他值(那么默認就是50),直接忽視了他,首先這是一個知識點的盲點;其次也許哪天你在哪篇文章中看到了這個參數(shù),當時有點印象,但是過一陣子就忘了,這是知識之間沒有建立連接,不是體系化的。但是如果你跟我一樣首先經(jīng)歷了這個問題的痛苦,然后在壓力和痛苦的驅(qū)動自己去找為什么,同時能夠把為什么從代碼層推理理解到OS層,那么這個知識點你才算是比較好地掌握了,也會成為你的知識體系在TCP或者性能方面成長自我生長的一個有力抓手。

netstat 命令

netstat跟ss命令一樣也能看到Send-Q、Recv-Q這些狀態(tài)信息,不過如果這個連接不是Listen狀態(tài)的話,Recv-Q就是指收到的數(shù)據(jù)還在緩存中,還沒被進程讀取,這個值就是還沒被進程讀取的 bytes;而 Send 則是發(fā)送隊列中沒有被遠程主機確認的 bytes 數(shù)。

netstat -tn 看到的 Recv-Q 跟全連接半連接沒有關(guān)系,這里特意拿出來說一下是因為容易跟 ss -lnt 的 Recv-Q 搞混淆,順便建立知識體系,鞏固相關(guān)知識點 。  

比如如下netstat -t 看到的Recv-Q有大量數(shù)據(jù)堆積,那么一般是CPU處理不過來導致的:

上面是通過一些具體的工具、指標來認識全連接隊列(工程效率的手段)。  

實踐驗證一下上面的理解

把java中backlog改成10(越小越容易溢出),繼續(xù)跑壓力,這個時候client又開始報異常了,然后在server上通過 ss 命令觀察到:

按照前面的理解,這個時候我們能看到3306這個端口上的服務(wù)全連接隊列最大是10,但是現(xiàn)在有11個在隊列中和等待進隊列的,肯定有一個連接進不去隊列要overflow掉,同時也確實能看到overflow的值在不斷地增大。

Tomcat和Nginx中的Accept隊列參數(shù)

Tomcat默認短連接,backlog(Tomcat里面的術(shù)語是Accept count)Ali-tomcat默認是200, Apache Tomcat默認100。

Nginx默認是511

因為Nginx是多進程模式,所以看到了多個8085,也就是多個進程都監(jiān)聽同一個端口以盡量避免上下文切換來提升性能   

總結(jié)

全連接隊列、半連接隊列溢出這種問題很容易被忽視,但是又很關(guān)鍵,特別是對于一些短連接應(yīng)用(比如Nginx、PHP,當然他們也是支持長連接的)更容易爆發(fā)。 一旦溢出,從cpu、線程狀態(tài)看起來都比較正常,但是壓力上不去,在client看來rt也比較高(rt=網(wǎng)絡(luò)+排隊+真正服務(wù)時間),但是從server日志記錄的真正服務(wù)時間來看rt又很短。

jdk、netty等一些框架默認backlog比較小,可能有些情況下導致性能上不去。

希望通過本文能夠幫大家理解TCP連接過程中的半連接隊列和全連接隊列的概念、原理和作用,更關(guān)鍵的是有哪些指標可以明確看到這些問題(工程效率幫助強化對理論的理解)。

另外每個具體問題都是最好學習的機會,光看書理解肯定是不夠深刻的,請珍惜每個具體問題,碰到后能夠把來龍去脈弄清楚,每個問題都是你對具體知識點通關(guān)的好機會。

最后提出相關(guān)問題給大家思考

全連接隊列滿了會影響半連接隊列嗎?

netstat -s看到的overflowed和ignored的數(shù)值有什么聯(lián)系嗎?

如果client走完了TCP握手的第三步,在client看來連接已經(jīng)建立好了,但是server上的對應(yīng)連接實際沒有準備好,這個時候如果client發(fā)數(shù)據(jù)給server,server會怎么處理呢?(有同學說會reset,你覺得呢?)

提出這些問題,希望以這個知識點為抓手,讓你的知識體系開始自我生長。

參考文章

http://veithen.github.io/2014/01/01/how-tcp-backlog-works-in-linux.html

http://www.cnblogs.com/zengkefu/p/5606696.html

http://www.cnxct.com/something-about-phpfpm-s-backlog/

http://jaseywang.me/2014/07/20/tcp-queue-%E7%9A%84%E4%B8%80%E4%BA%9B%E9%97%AE%E9%A2%98/

http://jin-yang.github.io/blog/network-synack-queue.html#

http://blog.chinaunix.net/uid-20662820-id-4154399.html

【本文為51CTO專欄作者“阿里巴巴官方技術(shù)”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2019-02-01 09:38:16

2018-10-15 08:06:33

TCP握手原理

2023-10-17 15:44:19

TCP四次揮手

2025-05-29 08:39:24

三次握手四次揮手TCP

2024-10-09 20:54:16

2022-07-07 09:00:17

TCP 連接HTTP 協(xié)議

2023-09-07 16:46:54

TCP數(shù)據(jù)傳遞

2023-03-07 08:38:23

三次握手四次揮手服務(wù)端

2023-10-24 15:22:09

TCPUDP

2022-10-10 07:34:36

TCP三次握手區(qū)塊鏈

2020-12-08 06:34:16

TCP握手SYN 報文

2024-07-15 08:21:26

TCPC#連接

2025-09-02 01:45:00

TCP通信字節(jié)流

2015-10-13 09:42:52

TCP網(wǎng)絡(luò)協(xié)議

2019-06-12 11:26:37

TCP三次握手四次揮手

2024-01-12 08:23:11

TCPACK服務(wù)器

2022-07-25 07:07:35

TCP客戶端服務(wù)器

2021-03-08 18:08:08

TCP Connect 協(xié)議

2023-03-06 15:43:56

2020-08-27 07:41:28

TCP協(xié)議數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品一区二区三区网站| 日本黄色大片视频| 九色精品91| 亚洲免费毛片网站| 亚洲xxxx在线| 国产中文字字幕乱码无限| 老汉色老汉首页av亚洲| 日韩欧美中文字幕在线播放| 日韩精品一区二区三区丰满| 一区二区三区免费在线| 国产一区清纯| 亚洲精品日韩在线| 中文字幕成人免费视频| 国产蜜臀在线| 99re热视频这里只精品| 欧美最猛性xxxxx亚洲精品| 亚洲久久久久久久| 91成人福利| 欧美性猛交xxxx乱大交退制版| 一本色道久久88亚洲精品综合| 午夜福利视频一区二区| 久久精品久久99精品久久| 欧美激情一级欧美精品| 加勒比一区二区| 精品国产乱码久久久久久樱花| 午夜精品在线视频一区| 亚洲不卡中文字幕| 日韩成人黄色| 国产一区91精品张津瑜| 日韩免费av片在线观看| 九九精品在线观看视频 | 国产精品99一区| 婷婷在线精品视频| 国产精品自拍区| 欧美在线不卡视频| 成年人深夜视频| 高清国产福利在线观看| 国产精品66部| 欧美在线中文字幕| 深夜福利影院在线观看| 国内精品久久久久久久影视简单| 精品少妇一区二区三区视频免付费| 亚洲精品乱码久久久久久自慰| 91青青草免费在线看| 男人j进女人j| 免费av在线电影| 成人动漫av在线| 97免费高清电视剧观看| 伊人网综合在线| 新狼窝色av性久久久久久| 久久99久久久久久久噜噜| www..com.cn蕾丝视频在线观看免费版 | 久久综合九色综合97婷婷| 91精品国产综合久久久久久丝袜| 欧美男人天堂网| 日本va欧美va瓶| 日本高清+成人网在线观看| 国产在线成人精品午夜| 欧美在线亚洲综合一区| 日韩视频在线免费| 成人精品一二三区| 成人激情免费视频| 亚洲性生活视频| 西西444www无码大胆| 亚洲素人在线| 亚洲男人第一网站| 性高潮久久久久久久| 美女毛片一区二区三区四区| 亚洲精品一区在线观看香蕉| 欧美无人区码suv| 精品福利一区| 日韩hd视频在线观看| 特级西西人体wwwww| 首页亚洲中字| 亚洲欧美日韩一区二区在线| 国产精品815.cc红桃| 天堂av一区二区三区在线播放| 日韩成人黄色av| 97人妻精品一区二区三区免 | 欧美激情专区| 国产乱视频在线观看| 国产日韩欧美综合一区| 手机看片福利永久国产日韩| 国产51人人成人人人人爽色哟哟 | 日韩欧美一区二区免费| 少妇献身老头系列| 日本亚洲不卡| 在线不卡国产精品| 2014亚洲天堂| 国产综合视频| 欧美最顶级的aⅴ艳星| 中文亚洲av片在线观看| 精一区二区三区| 不卡一区二区三区视频| 午夜av免费观看| 亚洲国产精品v| 在线播放 亚洲| 另类视频在线| 色天天综合色天天久久| 在线观看岛国av| 涩涩屋成人免费视频软件| 亚洲二区在线播放视频| 性欧美精品中出| 亚洲精品一二三区区别| 91精品国产99久久久久久| 樱花视频在线免费观看| 免费在线观看精品| αv一区二区三区| 欧美拍拍视频| 亚洲欧美日韩国产一区二区三区| 国产精品专区在线| 国产成人免费| 亚洲国产成人一区| 免费观看特级毛片| 亚洲国产三级网| 国产深夜男女无套内射| 日韩欧美一区二区三区免费观看| 91麻豆精品久久久久蜜臀| 成年人小视频在线观看| 日本不卡电影| 高清亚洲成在人网站天堂| 中文字幕+乱码+中文| 国产老肥熟一区二区三区| 噜噜噜噜噜久久久久久91| 岛国成人毛片| 色综合天天综合| 波多野结衣三级视频| 国产成人1区| 久久久久久久久久久国产| 中文字幕在线观看高清| 2022国产精品视频| r级无码视频在线观看| 成人精品视频在线观看| 亚洲美女中文字幕| 久久久久人妻一区精品色欧美| 日本不卡123| 蜜桃av色综合| 成人ssswww在线播放| 欧美一区二区三区免费大片| 国产精品成人在线视频| 翔田千里一区二区| 国产日韩一区欧美| 在线观看的网站你懂的| 欧美日韩免费视频| 国产在线综合视频| 水野朝阳av一区二区三区| 国产精品毛片一区视频| 国产二区三区在线| 91精品婷婷国产综合久久性色| 老熟妇一区二区| 亚洲一区国产一区| 国产精品国产三级欧美二区| 午夜视频在线观看免费视频| 在线观看成人小视频| 中文字幕在线看高清电影| 免费国产自线拍一欧美视频| 91天堂在线视频| 久热国产在线| 欧美色偷偷大香| 少妇太紧太爽又黄又硬又爽小说| 日韩中文字幕1| 日韩精品另类天天更新| 一二区成人影院电影网| 亚洲欧洲国产伦综合| www.国产毛片| 久久精品一区八戒影视| 日韩精品一区二区三区色欲av| 亚洲最大在线| 国产精品1234| 永久av在线| 在线不卡中文字幕播放| 成人在线观看高清| 国产精一区二区三区| 51xx午夜影福利| 视频亚洲一区二区| 午夜欧美大片免费观看| 神马久久久久| 日本丶国产丶欧美色综合| 日本爱爱爱视频| 麻豆精品一二三| 强伦女教师2:伦理在线观看| 国产一区二区三区黄网站| 欧美日韩国产成人在线| 人妻少妇精品无码专区久久| 精品久久在线播放| 免费看裸体网站| 久久99精品一区二区三区| 国产又大又长又粗又黄| 亚洲日本va午夜在线电影| 国内精品久久久久久久| 三级黄视频在线观看| 欧美自拍偷拍一区| 91视频综合网| 99精品视频在线观看| 人人爽人人av| 久久精品亚洲欧美日韩精品中文字幕| 91文字幕巨乱亚洲香蕉| 在线播放高清视频www| 视频直播国产精品| 成人久久久精品国产乱码一区二区| 精品日韩美女的视频高清 | wwwwww.欧美系列| 国产精品拍拍拍| 欧美激情1区2区| 久久久久九九九| 国产 日韩 欧美| 欧美一级视频一区二区| 免费在线视频欧美| 亚洲国产天堂久久国产91| 怡春院在线视频| 婷婷国产在线综合| 一区二区三区影视| 久久久久久电影| 97中文字幕在线观看| 日本在线不卡视频| 国产日韩av网站| 我不卡影院28| 日本成人三级| 久久在线观看| 国产精品va在线播放| 牛牛电影国产一区二区| 中文字幕亚洲一区在线观看 | 久久九九电影| 欧美美女黄色网| 成人高清av| 激情五月综合色婷婷一区二区 | 色八戒一区二区三区| 欧美日韩精品一区二区三区视频播放 | 2020国产精品视频| 97超碰在线公开在线看免费| 亚洲性夜色噜噜噜7777| 色婷婷av一区二区三| 欧美精品久久一区| 国产精品国产精品国产| 黑丝美女久久久| 久久精品国产亚洲av香蕉| 中文字幕一区二区三区视频| 国产精品亚洲无码| 91丝袜呻吟高潮美腿白嫩在线观看| 三级黄色片免费看| 久久精品久久精品| 久久久久国产一区| 日韩精品一卡二卡三卡四卡无卡| 男女啪啪免费视频网站| 欧美成熟视频| xxxxxx在线观看| 91精品天堂福利在线观看| 香蕉久久夜色| 精品视频亚洲| 日本最新一区二区三区视频观看| 精品国产午夜肉伦伦影院| 粉嫩精品一区二区三区在线观看| 国产精品一级在线观看| 成人xxxxx| 国产成人免费av一区二区午夜 | 婷婷在线播放| 久久999免费视频| av免费看在线| 欧美成年人视频| 秋霞在线午夜| 久久久之久亚州精品露出| 1234区中文字幕在线观看| 国外成人在线播放| 97超碰免费在线| 91精品国产高清久久久久久久久| h片在线观看| 91地址最新发布| 三上悠亚一区二区| 国产精品国产亚洲伊人久久| 亚洲日本网址| 国产欧美精品在线播放| www一区二区三区| 成人av资源网| 日韩精选在线| 日韩欧美亚洲区| 亚洲国产成人精品女人| 超碰10000| 欧美精品国产一区| 欧美另类videos| 91精品动漫在线观看| 一区二区91美女张开腿让人桶| 久久久久久久久99精品大| 国产av第一区| 88国产精品视频一区二区三区| 91精品国产毛片武则天| 亚洲黄色大片| caopor在线视频| 精品一区精品二区高清| 日本女人性视频| 99精品视频免费在线观看| 四虎影成人精品a片| 国产精品福利一区二区三区| 欧美黑人一级片| 欧美性猛交xxxx黑人| 一级黄色大毛片| 欧美精品一区二区三区高清aⅴ| 天天干天天爽天天操| 国产亚洲精品激情久久| 黄色网页在线免费观看| 91po在线观看91精品国产性色| 91福利精品在线观看| 99re在线国产| 国产精品手机在线播放| 超级碰在线观看| 久久久久久黄| 亚洲精品鲁一鲁一区二区三区| 久久这里只有精品首页| 精品无码久久久久成人漫画 | 中文字幕日韩免费| 日韩免费电影网站| 高清日韩av电影| 久久久这里只有精品视频| 久久亚洲精品人成综合网| 国产精品高清一区二区三区| 久久精品不卡| 男女高潮又爽又黄又无遮挡| 国内精品免费在线观看| 国产激情在线免费观看| 亚洲一区视频在线观看视频| 中文在线观看av| 亚洲精品一区二区三区99| 日本在线免费中文字幕| 2019最新中文字幕| 在线精品国产亚洲| 亚洲欧美久久234| 麻豆久久婷婷| 日韩av无码一区二区三区不卡| 久久久一区二区| 国产精品第九页| 日韩一卡二卡三卡四卡| 91sp网站在线观看入口| 欧美最顶级的aⅴ艳星| 国产一区丝袜| 女人床在线观看| 韩国av一区二区三区| 少妇av片在线观看| 色综合激情五月| 婷婷在线观看视频| 精品自拍视频在线观看| 日韩综合av| 无码免费一区二区三区免费播放| 在线亚洲精品| 美女又爽又黄免费| 亚洲一区二区3| 亚洲AV午夜精品| 欧美成人剧情片在线观看| 在线不卡一区| 一级日韩一区在线观看| 久久久精品性| 欧美日韩人妻精品一区在线| 专区另类欧美日韩| 在线观看视频中文字幕| 亚洲色图偷窥自拍| 激情视频网站在线播放色| 国产高清精品一区二区三区| 亚洲国产老妈| 性久久久久久久久久久久久久| 国产欧美日本一区二区三区| www.久久精品视频| 亚洲欧美制服中文字幕| 成人直播视频| 青青草原亚洲| 日本亚洲视频在线| 一区二区伦理片| 欧美伊人久久大香线蕉综合69| 亚洲三级中文字幕| 国产成人亚洲综合91精品| 台湾色综合娱乐中文网| 人妻熟妇乱又伦精品视频| 91最新地址在线播放| 国产精品suv一区| 亚洲最新av在线网站| 青青青国产精品| 神马午夜伦理影院| 国产**成人网毛片九色| 国产无码精品在线观看| 亚洲精品一区中文| 免费高清视频在线一区| 亚洲一区二区三区欧美| 国产精品原创巨作av| 日本熟妇乱子伦xxxx| 日韩精品久久久久久久玫瑰园| www.国产精品| 国产精品无码电影在线观看 | 不卡中文字幕在线观看| 中文字幕一区二区日韩精品绯色| 亚洲欧美激情在线观看| 欧美日韩aaaa| 婷婷成人影院| 一起操在线视频| 亚洲一区影音先锋| 欧美人体大胆444www| 成人免费视频a| 日韩视频在线一区二区三区| 老头老太做爰xxx视频| 日韩一区二区三区视频在线观看| 成av人片在线观看www| 亚洲电影免费| 成人黄色小视频在线观看| 夜夜爽妓女8888视频免费观看|