关于connect返回ETIMEDOUT错误

qbchen001 2008-04-02 11:31:15
我写了一个并发的TCP服务端,用的是SELECT加上fork子进程的处理方式。
用客户端进行测试时发现,其实FD_SET集最大的情况下也就保存了60多个连接,再加大客户端连接数量的话,客户端connect的时候就会返回ETIMEDOUT,解释是这样的“Timeout while attempting connection. The server may be too busy to accept new connections. Note that for IP sockets the timeout may be very long when syncookies are enabled on the server.”
但我现在不知道,服务端是什么问题导致了客户端的连接超时?
请各位大给个优化方案。。。
...全文
18267 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlefirebug 2008-04-02
  • 打赏
  • 举报
回复
listen的问题.
listen(sockfd,backlog);
The second argument to this function specifies the maximum number of connections the kernel should queue for this socket.
排队的最大连接数有限制
悠悠长风 2008-04-02
  • 打赏
  • 举报
回复
你看是否是达到了server的排队的最大连接个数。
qbchen001 2008-04-02
  • 打赏
  • 举报
回复
UP...继续求教........
qbchen001 2008-04-02
  • 打赏
  • 举报
回复
再UP一下,是否有其它解决方案
qbchen001 2008-04-02
  • 打赏
  • 举报
回复
现在我把这个值填为64,启动200个客户端测试,FD_SET集最大的情况下也就保存了130多个连接,还是有很多的客户端返回这个超时错误....这个值的增大确实对性能的提高的极大的帮助么?能加到1024之类的大小么?
littlefirebug 2008-04-02
  • 打赏
  • 举报
回复
确实这个值没有说明到底该多大,但可以根据你程序的要求来设定.
大了没关系.即时超过了内核设定的最大值,内核会自动修改为他支持的最大值.
qbchen001 2008-04-02
  • 打赏
  • 举报
回复
谢楼上的。
[Quote=引用 3 楼 littlefirebug 的回复:]
listen的问题.
listen(sockfd,backlog);
The second argument to this function specifies the maximum number of connections the kernel should queue for this socket.
排队的最大连接数有限制
[/Quote]
这里我填的是5,但是我看了UNIX网络编程上,关于这个参数也是没有说清楚,这个参数有个推荐值么,或者说最大值,涉及到内核参数么?加大这个值对性能提高有多大帮助?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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