免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5475 | 回复: 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回应)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

ITPUB技术栈

ITPUB技术栈是ITPUB企业打造的垂直于IT领域的知识社群平台,在这里,你既可以是创作者也可以是消费者。如果你的IT生涯丰富多彩,喷薄的个人价值尽可在小栈内体现;如果你渴望找到志同道合的伙伴,拓宽人脉,小栈比跑会场更快。 小栈特色:
1.极高的用户转化率,实现更直接的知识变现;
2.随时随地,刷个朋友圈的时间,实现更长效的信息沉淀;
3.戳痛、难点的专业咨询,更接近成功解决方案的时刻;
4.贴近意见领袖,个人高速成长,迈入更富有价值的人际圈。

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

技术小栈>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP