免费注册 查看新帖 |

Chinaunix

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

在大量短连接的情况下,tcp的accept经常阻塞问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-04 21:21 |只看该作者 |倒序浏览
应用场景是:大量tcp短连接,查询完毕直接关闭,必须用tcp协议。
问题:发现进行压力测试时,经常阻塞到accept这里,TIME_WAIT大量出现,设置:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
没有TIME_WAIT了,但是还是阻塞,不知道有没有遇到同样问题的朋友?

什么情况下,客户端发送SYN_SENT,服务端监听建立了,但是不发送ack,accept也没有唤醒?还请高手释疑。(通过tcpdump看到客户端发送SYN_SENT了,客户端和服务端在一台机器上)

论坛徽章:
0
2 [报告]
发表于 2012-07-05 02:20 |只看该作者
rain_fish 发表于 2012-07-04 21:21
应用场景是:大量tcp短连接,查询完毕直接关闭,必须用tcp协议。
问题:发现进行压力测试时,经常阻塞到ac ...



你把tcp_syncookies关掉试试。这个选项是防DoS的,瞬间连接太多可能被当作DoS。

论坛徽章:
0
3 [报告]
发表于 2012-07-05 11:15 |只看该作者
回复 2# wwwsq


    试了,不行

论坛徽章:
0
4 [报告]
发表于 2012-07-05 11:15 |只看该作者
查到有碰到这个问题的帖子:http://bbs.chinaunix.net/forum.p ... age%3D1#pid22191772

解决办法是:

重新编译了一份内核,支持SMP的,CPU还是一个核,问题竟然解决了.

请问这是为何?有没有其他解决办法?

论坛徽章:
0
5 [报告]
发表于 2012-07-05 11:22 |只看该作者
rain_fish 发表于 2012-07-05 11:15
查到有碰到这个问题的帖子:http://bbs.chinaunix.net/forum.p ... 29&pid=22191772 ...



那个帖子的情况好像是worker thread太激进,导致accept thread没机会被调度。

这是程序设计问题,算bug。没什么好说的。


论坛徽章:
0
6 [报告]
发表于 2012-07-05 11:35 |只看该作者
wwwsq 发表于 2012-07-05 02:20
你把tcp_syncookies关掉试试。这个选项是防DoS的,瞬间连接太多可能被当作DoS。


问题解决,防火墙的问题,谢谢!

论坛徽章:
0
7 [报告]
发表于 2012-07-05 11:52 |只看该作者
什么情况下,客户端发送SYN_SENT,服务端监听建立了,但是不发送ack,accept也没有唤醒?

可能是listen的监听SOCKET维护的队列:已完成三次握手队列(但未调用accept的SOCKET会占用此队列)、未完成三次握手队列中的连接满了,这时候按照《UNIX网络编程》的说法是服务器不会向客户端发送任何报文(但我实测WIN下不是这样的,WIN下此种情况会发送RST回应)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP