问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

tcp通道关闭时,发生了什么? time_wait close_wait

发布网友 发布时间:2022-05-01 22:34

我来回答

1个回答

热心网友 时间:2022-06-24 10:23

当第一次遇到这种问题的时候,你可能会有如下的问题:
其实,你真正想问的是:
TCP通道是一个连接,连接的两端都可以向通道里写数据或者从通道里读数据,连接的两端都可以发起关闭操作。整个TCP通道的关闭流程如下:
A(socketfd:10) <——–TCP Connction ———-B(socketfd:20)
关闭A,则A向B发送FIN;
如果程序显式的关闭了B,那么B会向A发送一个FIN,然后B就处于LAST_ACK状态了;
A在接受到B的FIN后,发出最后一个ACK,此时A就处于知名的TIME_WAIT状态了。TIME_WAIT时间一般会比较长。
尽量避免TIME_WAIT过多的一端主动关闭socket
使用SocketPool,避免频繁创建/关闭socket
提到Thrift ThreadPoolServer有时候会出现较多的close wait状态,有朋友问我这是不是thrift的bug?写过Server比较多的同志们应该能意识到这个问题的原因,不值得说,可是我今天实在是太郁闷无聊了,我就写写我的想法吧。
我觉得这当然不能算是Thrift的Bug,如果出现了这样的问题,其实是因为错误的选择了Server的类型,错误的实现了Client,过于保守的Server Max Connection配置等等原因。
对于ThreadPoolServer而言,每一个客户端连接,Server端都需要提供一个固定的线程来维护,在空闲时,线程堵塞在read()操作,等待客户端数据的到来。Thrift ThreadPoolServer中使用的默认线程池是定长线程池,意味着Server端能提供的线程池数是有限的。当线程用完时,新的连接将不能得到Server殷勤的服务,它不会在乎你的生死,你必须等待。
Server会接受这个连接,连接成功建立;
Server没有合适的线程来处理这个连接,于是将这个连接放到暂存列表;
如果这个时候有线程空闲了,则一切顺利,这个线程将接管这个连接;
但遗憾的是,我们没有空闲线程,所以这个连接一直处于空闲状态,直到客户端程序timeout(如果设置了timeout的话);
连接timeout,意味着暂存列表里的连接已经失效了,此时对应的socket处于CLOSE_WAIT中(出现了本文开头的情况),遗憾的是,我们依然没有空闲的线程来处理这个连接,所以它一直处于CLOSE_WAIT中。
终于,某一个时刻,有一个客户端关闭了连接,我们有了空闲线程,它去查看暂存列表。发现有一个socket fd,尝试去接管它,对这个fd执行read(),然后得到一个Connection Reset error,终于,我们可以优雅的关闭它了(CLOSE_WAIT结束)。
以上就是全部的故事。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win10电脑hdmiwin10笔记本hdmi连接电视没反应 平板电脑与电视机联接华为平板怎么投屏到电视上 长虹chiq电脑无线投影如何无线把电脑屏幕投影到电视屏幕上 模拟电视电脑系统智能电视怎么变成电脑系统 ops电脑加装固态硬盘ops电脑是什么意思 我想问一下立宇泰电子的ARMSYS6410开发板可以外接什么模块? 小心那些处理过的2元绿幽灵,教你这几招就能识别! 如何辨别人民币是否水洗过,刚有兴趣做收藏可去买第四套人民币还有是否水... oppor7splus手机怎么样现在?照相好不好。是多会儿出来的机子呢。目前... ps怎么改像素大小且不模糊 有船有水有风的成语 带风字的成语有哪些? windows time-wait怎么解决 找一下描写风和水的成语 什么风什么水的词语或成语 带有水、风、雪、雨的成语分别有 描写风和水的成语 风……水……成语 是否有风和水两字组成的成语 含有水的风成语 小学语文练习册风和水的成语有什么?. 描写风,水,的成语有哪些 写出带有“风”字的成语、带有“水”字的成语8个 有关 风跟水 的成语都有哪些呢? 含风和水的四字成语 螺丝和羊肉西红柿炒蛋一起吃会怎么样 西纪柿可以和羊肉白菜一起煮吗? 支付宝收入一笔建信基金是怎么回事 CBA广东VS山东直播CCTV5 CBA广东VS山东在线直播 今晚CBA第六轮山东VS广东现场直播 为什么支付宝中莫名其妙被建信基金突然间扣了十元钱? 跟风生水起压韵的成语有哪些 包含风的成语有哪些 tomcat timewait算不算在连接数内的 关于水的成语有哪些,关于水的成语大全 有水有船有风有雨打一成语 java中短时间new Socket次数过多,并且socket.close() 并不是释放连接,而是设置成了time_wait状态怎么处理 为什么PID为0的系统空闲进程会“不停使用”网络资源? 简述tcp套接字生存周期中time-wait状态的作用 开始运行CMD 里打 netstat -an 出现一堆TIME_WAIT 怎么回事 【兔子台韩国hd】-mimixx-bolg18+ 新电脑的word office要我注册账户才可以使用,我不想注册该怎么解决? 军绿色匡威 军绿色高帮帆布鞋怎么搭配显个性? 匡威帆布鞋买什么颜色好呢?纠结 匡威绿色高帮经典款 军绿色工装裤和黑白高帮匡威(白色低帮匡威)配什么颜色的袜子好 帆布鞋颜色哪种好 匡威高帮经典款 军绿色卫衣搭配灰色直筒裤怎么样 再加个*高帮匡威 会不会太冲突了? 军绿色卫衣搭配灰色直筒裤怎么样再加个*高帮匡威 会不会不太合适