yunhappy 发表于 2008-07-17 17:09

很是想知道 怎么控制epoll的超时.         

有连接进来后, 这个 连接什么也不干, 怎么控制这个连接的超时呢?

zsniper 发表于 2008-07-17 17:09

回复 #21 yunhappy 的帖子

libevent可以解决超时问题,自己写的话,效率没有那么高,


当然我也写过一个用红黑树实现的超时,效率不高。。。。


我用的libevent-1.3的版本,他是用堆排序作的。可以参考一下。。

[ 本帖最后由 zsniper 于 2008-7-17 17:20 编辑 ]

cookis 发表于 2008-07-17 17:39

我用epoll 测试过2W路的并发
找4台设备, 每台5000路, 每秒发一个数据包(5000并发), 每个数据包1400Bytes.
服务端CPU使用率40~50%

服务器配置: Intel(R) Pentium(R) 4 CPU 3.00GHz 双核

cookis 发表于 2008-07-17 17:41

回复 #21 yunhappy 的帖子

这个得通过你应用层的心跳来控制吧..

键盘老农 发表于 2008-07-17 17:49

kqueue可以管网络,文件,事件用的很爽,没iocp那么累还要考虑同步,iocp下对多个连接在做广播时真的很难受。但俩者在功能和性能差不多,iocp也可以管文件读取。epoll据传说只管socket其他好像不行,没有深入研究。一般情况下,程序运行的好坏跟写程序的人有关系,就系统kqueue和iocp俩者的差别一般很难比较的出来。

对数据在传递时用拷贝还传指针,指针会快很多,但一般我还会去拷贝,因为传指针在多线程下不确定性太大,安全第一。在我做的项目中3000-4000个客户端占用资源最厉害的是数据库,其他现在的占用资源很少。

[ 本帖最后由 键盘老农 于 2008-7-17 17:51 编辑 ]

键盘老农 发表于 2008-07-17 17:50

原帖由 cookis 于 2008-7-17 17:39 发表 http://bbs.chinaunix.net/images/common/back.gif
我用epoll 测试过2W路的并发
找4台设备, 每台5000路, 每秒发一个数据包(5000并发), 每个数据包1400Bytes.
服务端CPU使用率40~50%

服务器配置: Intel(R) Pentium(R) 4 CPU 3.00GHz 双核
你做的反射还是广播。

yunhappy 发表于 2008-07-17 17:51

回复 #24 cookis 的帖子

高深 是指通过硬件控制么?

ssafa 发表于 2008-07-17 17:53

先收藏,有时间慢慢看

cookis 发表于 2008-07-17 17:55

原帖由 yunhappy 于 2008-7-17 17:51 发表 http://bbs.chinaunix.net/images/common/back.gif
高深 是指通过硬件控制么?


你的客户端跟服务器之间没有心跳机制吗..我就是说的这个..

cookis 发表于 2008-07-17 17:56

原帖由 键盘老农 于 2008-7-17 17:50 发表 http://bbs.chinaunix.net/images/common/back.gif

你做的反射还是广播。

服务器只收, 因为当时主要是测试仪epoll的接收能力. TCP模式.
页: 1 2 [3] 4 5 6 7 8 9 10 11 12
查看完整版本: 超高性能网络编程, Asynchronous network I/O