免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5650 | 回复: 6

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

论坛徽章:
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
发表于 2012-07-05 02:20 |显示全部楼层
rain_fish 发表于 2012-07-04 21:21
应用场景是:大量tcp短连接,查询完毕直接关闭,必须用tcp协议。
问题:发现进行压力测试时,经常阻塞到ac ...



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

论坛徽章:
0
发表于 2012-07-05 11:15 |显示全部楼层
回复 2# wwwsq


    试了,不行

论坛徽章:
0
发表于 2012-07-05 11:15 |显示全部楼层
查到有碰到这个问题的帖子:http://bbs.chinaunix.net/forum.p ... age%3D1#pid22191772

解决办法是:

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

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

论坛徽章:
0
发表于 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
发表于 2012-07-05 11:35 |显示全部楼层
wwwsq 发表于 2012-07-05 02:20
你把tcp_syncookies关掉试试。这个选项是防DoS的,瞬间连接太多可能被当作DoS。


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

论坛徽章:
0
发表于 2012-07-05 11:52 |显示全部楼层
什么情况下,客户端发送SYN_SENT,服务端监听建立了,但是不发送ack,accept也没有唤醒?

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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP