首页 > 其他 > 详细

CLOSE_WAIT

时间:2021-08-17 20:34:15      阅读:10      评论:0      收藏:0      [点我收藏+]

 

 技术分享图片

 

CLOSE_WAIT:当接收到Client的FIN(M),还未发送FIN(N),sever处于CLOSE_WAIT状态、

出现大量CLOSE_WAIT的场景:server未能正常发送FIN(N)。

server关闭连接通过close或者shutdown这两个系统调用来实现。

close的原理:内核检查socket上的引用计数器。如果大于1,则将这个计数器减1,然后直接返回。如果等于1,内核才会真正地关闭此socket连接(发送FIN到客户端来关闭连接)。

shutdown的原理:内核不会检查socket上的计数器,而是直接发送FIN到client关闭连接。

那么出现大量CLOSE_WAIT的场景:一个进程打开一个socket,然后fork出子进程,父进程打开的socket是会被子进程所继承,即子进程能够访问该socket。此时socket上的引用计数为 2。如果子进程调用close并退出,并不会关闭该连接,因为此时引用计数为1。如果父进程是负责监听连接的主进程,永远都不会关闭,那么close_wait就会越积越多,导致出现大量的close_wait。

CLOSE_WAIT

原文:https://www.cnblogs.com/BaymaxHH/p/15152947.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!