64,664
社区成员
发帖
与我相关
我的任务
分享
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连接测数据,还没测出问题来 (也许测的不够)