服务端出现SYN_RECV问题

nemo_87 2015-04-05 11:26:53
最近出现了几次客户端无法访问服务器的情况,每次出现问题的时候,查看服务端的连接,都会发现很多SYN_RECV出现,服务端的程序机制是accept()之后创建新线程,监听线程继续等待连接。请问这种方式是否会造成一次客户端连接出现异常,accept会阻塞住客户端的其他连接。
然后每次出现这种情况后,我将服务端程序重启后,就恢复正常了,大神帮忙支支招,应该如何定位问题。
谢谢!!
...全文
1866 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
羽飞 2015-04-07
  • 打赏
  • 举报
回复
引用 3 楼 nemo_87 的回复:
[quote=引用 1 楼 hnwyllmm 的回复:] 楼主的程序会有大批量的客户端连过来吗?而且都是短连接? 看到这种情况用pstack看下你的程序卡在哪里,是不是有死锁的情况 SYN_RECV和CLOSE_WAIT应该都是卡死了,后面一个是连接关闭处理的异常,没有调用close及时关闭 如果连接过大,试着调整backlog参数试试
连接的量是比较大的,客户端采用短链接,目前backlog是5,要不要改大一些[/quote] 试一下,但是感觉这个不是根本原因,还是程序处理 不够及时,看看程序都会卡在哪里
nemo_87 2015-04-07
  • 打赏
  • 举报
回复
引用 1 楼 hnwyllmm 的回复:
楼主的程序会有大批量的客户端连过来吗?而且都是短连接? 看到这种情况用pstack看下你的程序卡在哪里,是不是有死锁的情况 SYN_RECV和CLOSE_WAIT应该都是卡死了,后面一个是连接关闭处理的异常,没有调用close及时关闭 如果连接过大,试着调整backlog参数试试
连接的量是比较大的,客户端采用短链接,目前backlog是5,要不要改大一些
赵4老师 2015-04-07
  • 打赏
  • 举报
回复
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "TcpTimedWaitDelay"=dword:0000001e
羽飞 2015-04-06
  • 打赏
  • 举报
回复
楼主的程序会有大批量的客户端连过来吗?而且都是短连接? 看到这种情况用pstack看下你的程序卡在哪里,是不是有死锁的情况 SYN_RECV和CLOSE_WAIT应该都是卡死了,后面一个是连接关闭处理的异常,没有调用close及时关闭 如果连接过大,试着调整backlog参数试试

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧