--
求职 java架构师或高级工程师
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
TIME_WAIT是哪边先关闭socket哪边进入,所以可以服务器发送一个指令给客户
端,让客户端关闭
accept阻塞是什么意思?不是很明白,我个人理解是不是你把这个socket设置为阻
塞了,记得将
accept的socket设置为非阻塞ioctl调用设置FIONBIO,这样,没有backlog的时
候,accept会
立刻返回-1,这样你就可以去跑你其他逻辑了。
于 12-7-2 下午6:22, lizp.net 写道:
> 应用场景是:大量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了,但是还是阻塞,不知道有没有遇到同样问题的朋友?
accept������ʲô��˼�����Ǻ����ף��Ҹ�������Dz���������socket����Ϊ��
���ˣ�
�ǵģ����ǰ�accept����Ϊ�����ˣ����ǽ��д����ͻ��˳�������ʱ��server�˵�acceptӦ�ò���������ģ���Ϊ�ͻ� ���ڳ������Ӱ�����ʱ�ҽ���telnet��¼������¼��accept�����ԣ�����ʲôԭ��
�� 2012��7��3�� ����3:01��richardcao <straywi...@gmail.com>д ����
TIME_WAIT�� �ı��ȹر�socket�ı߽��룬���Կ��Է���������һ��ָ���ͻ�
�ˣ��ÿͻ��˹ر�
accept������ʲô��˼�����Ǻ����ף��Ҹ�������Dz���������socket����Ϊ��
���ˣ��ǵý�
accept��socket����Ϊ������ioctl��������FIONBIO������û��backlog��ʱ
��accept��
���̷��أ�1��������Ϳ���ȥ�����������ˡ�
�� 12-7-2 ����6:22, lizp.net �:
> Ӧ�ó����ǣ�����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�ˣ����ǻ�������֪����û������ͬ����������ѣ�
> --
> �����ܷ������з�����Ӫ
> http://groups.google.com/group/dev4server
--
�����ܷ������з�����Ӫ
http://groups.google.com/group/dev4server
客户端连接再快也不如你程序跑的快,所以在accept设置阻塞是不明智的,你应该在
epoll,kevent这种地方设置,或者是每次循环最后sleep。
另外,你的说法是你accept的地方阻塞住,然后你telnet后都没有任何反应,一直处于
accept阻塞的话,那就要检查你的网络了,应该是根本没连接上才对。
于 12-7-3 下午5:32, lizp.net 写道:accept阻塞是什么意思?不是很明白,我个人理解是不是你把这个socket设置为阻
塞了,
是的,我是把accept设置为阻塞了,但是进行大量客户端尝试连接时,server端的accept应该不可能阻塞的,因为客户 端在尝试连接啊,这时我进行telnet登录都无法登录,accept无动于衷,这是什么原因啊?
在 2012年7月3日 下午3:01,richardcao <straywi...@gmail.com>写 道:
TIME_WAIT是 哪边先关闭socket哪边进入,所以可以服务器发送一个指令给客户
端,让客户端关闭
accept阻塞是什么意思?不是很明白,我个人理解是不是你把这个socket设置为阻
塞了,记得将
accept的socket设置为非阻塞ioctl调用设置FIONBIO,这样,没有backlog的时
候,accept会
立刻返回-1,这样你就可以去跑你其他逻辑了。
于 12-7-2 下午6:22, lizp.net 写道:
> 应用场景是:大量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了,但是还是阻塞,不知道有没有遇到同样问题的朋友?
> --
> 高性能服务器研发与运营
> http://groups.google.com/group/dev4server
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
----
高性能服务器研发与运营
http://groups.google.com/group/dev4server
高性能服务器研发与运营
http://groups.google.com/group/dev4server
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
你确认服务端收到了SYN?
Ack是TCP栈负责发的,握手没有建立,TCP栈自然不会通知应用层来拿连接.
看看TCP状态转换图吧,然后分析一下服务端的连接状态,tcpdump什么的..
发件人: dev4s...@googlegroups.com [mailto:dev4s...@googlegroups.com] 代表 lizp.net
发送时间: 2012年7月4日 19:39
收件人: dev4s...@googlegroups.com
主题: Re: 在大量短连接的情况下,tcp的accpet经常阻塞问题
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
-----
什么情况下,客户端发送SYN_SENT,服务端监听建立了,但是不发送ack?还请高手释疑。
-----
可不是监听建立了就一定会发送ACK哦.
监听套接字的连接队列满了,就不会理会客户端来的SYN,另一方面,客户端发了SYN收不到服务端的ACK就会重发SYN,若干次重试还不成功,connect最终返回超时.
这个过程也是是TCP栈处理的.
发件人: dev4s...@googlegroups.com [mailto:dev4s...@googlegroups.com] 代表 lizp.net
发送时间: 2012年7月4日 21:23
收件人: dev4s...@googlegroups.com
主题: Re: 答复: 在大量短连接的情况下,tcp的accpet经常阻塞问题
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server
--
高性能服务器研发与运营
http://groups.google.com/group/dev4server