免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3071 | 回复: 14
打印 上一主题 下一主题

[网络管理] 请熟悉linux网络方面的高手帮忙看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-08 14:56 |只看该作者 |倒序浏览
我们有台服务器有很多僵尸连接,使用netstat查看当前连接状态,有非常多的ESTABLISHED条目。

我们的应用是bs结构,在浏览器页面调用连接服务器的客户端软件。

当正常退出浏览器是,服务器上的相应连接会正常释放。

但是当有时浏览器无响应或客户电脑死机时,该连接在服务器上就会一直不被释放,最终导致资源枯竭。

请问有谁知道这种异常中断的ESTABLISHED的连接的释放机制是怎样?

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2013-11-08 15:00 |只看该作者
本帖最后由 q1208c 于 2013-11-08 15:02 编辑

可以试着修改系统的参数, 减小keepalive 的时间,和检测的间隔和次数.

希望有用.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2013-11-08 20:04 |只看该作者
这种异常中断的ESTABLISHED的连接的释放机制,有可能是应用程序自己控制的,谁开发谁负责。

论坛徽章:
0
4 [报告]
发表于 2013-11-10 13:41 |只看该作者
回复 3# sohusina


看来是这样的,服务进程不会主动释放连接。


   

论坛徽章:
0
5 [报告]
发表于 2013-11-10 13:47 |只看该作者
回复 2# q1208c


多谢回复,僵尸连接不是keepalive。   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
6 [报告]
发表于 2013-11-11 08:22 |只看该作者
回复 5# upandup


  我说的是 tcp 的 keepalive , 跟你的应用没关系.

我了解的也有限, 只能简单的说, 正常的tcp的连接的建立和断开, 都是有相应的包(syn/fin) 来通知的, 所以, 通信双方会各自关闭的自己的连接. 但在特定的情况下, 双方的通信可能在中途就中断了, 无法再继续, 这可能是由于网络故障, 或者一方主机的故障引起的. 这时在非故障一方的, 由于没有收到任何的通知, 它就会有一个 EST 状态的 连接挂在这里. 在tcp的协议里, 为了避免这样的连接持续下去, 有一个 超时, 就是 tcp_keepalive_time. 在 Linux上, 这个值比较长, 7200秒. 所以, 要等到 7200秒之内没收到任何数据, OS才会认为这个连接可能已经有了问题, 于是会发起探测(probe),  默认的probe 次数是9次, 间隔是75秒,
所以, 一个EST的连接(无数据接收), 大约会在 7200 + 9 * 75 = 7875秒之后断开.

我说的调整 keepalive, 就是要减小这个 keepalive tiime, 与 应用无关.

希望我的理解是正确. 楼主可以查一下tcp的相关协议, 我的英文太烂, 看不懂那些xxoo.

论坛徽章:
0
7 [报告]
发表于 2013-11-11 22:20 |只看该作者
回复 6# q1208c

我的意思是连接的timer是off,不是keepalive。
多谢认真回复!
   

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
8 [报告]
发表于 2013-11-12 10:13 |只看该作者
回复 7# upandup

你好象还是没看懂我说的. 算了. 祝你早日解决吧.


   

论坛徽章:
0
9 [报告]
发表于 2013-11-12 11:13 |只看该作者
楼上说的我看懂了,他讲的是TCP三次握手的概念,TCP异常中断释放时间LINUX里较长,楼主想弄明白的是这个ESTABLISHED连接释放是不是应用程序里的计时器设置的,该怎么调整。或许楼主试试也未尝不可。

论坛徽章:
0
10 [报告]
发表于 2013-11-12 11:52 |只看该作者
回复 8# q1208c

谢谢!

我的意思是僵尸连接的timer类型是off,不是keepalive。
如果是keepalive类型,超时肯定会释放的。

我们这种情况的ESTABLISHED,确实如3楼所说,释放连接是软件自己控制的。不释放的原因或是应用角度的考量,或是个bug。
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP