tcp连接数上不去,什么原因?

ken_scott 2013-08-13 10:56:14

windows下用的IOCP,参考 小猪 的代码写的,客户端、服务器的代码是并在一起的
测试结果:(不测数据,只测连接数)
开一个客户端,只能建立3900多个连接,然后就有10055错误了
再开一个客户端,也许还能建立5、6个连接,然后又10055错误了
(别人的上万个连接是怎么建立起来的)


linux下用的EPOLL,EL模式
测试结果:(不测数据,只测连接数)
开一个客户端,只能建立1017个连接,错误24(这个原因是知道的,描述符个数的限制造成的)
但是,再开一个客户端,建立100多个后,连接建立的速度就超慢了
(也就是说服务器epoll_ctl(1200个socket后就变慢了,很慢,所以没耐心测连接数的极限)
开始怀疑是epoll_ctl用多了, 后面只ADD listen的socket(只用一次epoll_ctl),可情况依旧;
还有个很怪的现象:关闭第一个客户端(1000多连接),第二客户端的连接建立速度也提不起来...
(epoll要怎么写才高效?)
(当前用法: ADD(listen_fd,可读),ADD(other_fd,可读),当other_fd有数据要写时,MOD(other_fd, 可读|可写),写通知后,如果发现other_fd没数据可写了(都写完了), 就MOD(other_fd, 可读))


300连接测数据,还没测出问题来 (也许测的不够)

代码下载:
http://download.csdn.net/detail/ken_scott/5923957
git@github.com:yanrk/common.git


了解的说说看法,或者写个的说说心得
...全文
337 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ken_scott 2013-08-13
  • 打赏
  • 举报
回复
引用 2 楼 max_min_ 的回复:
select 函数才会限制连接的socket数吧! poll好像不限制的吧!
我现在想这个估计是操作系统设置的 unlimit -n 好像不能增大
max_min_ 2013-08-13
  • 打赏
  • 举报
回复
select 函数才会限制连接的socket数吧! poll好像不限制的吧!
ken_scott 2013-08-13
  • 打赏
  • 举报
回复
了解的说说看法,写过的说说心得
ken_scott 2013-08-13
  • 打赏
  • 举报
回复
引用 4 楼 yunchao630 的回复:
据说XP系统需要在注册表修改某个值,增加连接上限
引用 5 楼 mujiok2003 的回复:
http://support.microsoft.com/kb/196271
谢谢两位!
mujiok2003 2013-08-13
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/196271
翅膀又硬了 2013-08-13
  • 打赏
  • 举报
回复
据说XP系统需要在注册表修改某个值,增加连接上限

64,664

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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