我正在使用epoll(边缘触发)和线程的线程网络服务器,我正在使用httperf来对我的服务器进行基准测试.
到目前为止,它的表现非常好或几乎完全符合发送请求的速度.直到1024障碍,一切都放慢到大约30个请求/秒.
在64位的Ubuntu 9.04上运行.
我已经尝试过了:
andri @ filefridge:〜/ Dropbox/School/Group 452/Code/server $ ulimit -n
20000
我很确定这种减速是在操作系统中发生的,因为它发生在事件发送到epoll之前(是的,我也增加了epoll的限制).
我需要对程序可以处理的并发连接数进行基准测试,直到它开始变慢(没有操作系统干扰).
如何让我的程序运行超过1024个文件描述符?
这个限制可能是有原因的,但是出于基准测试的目的,我需要它.
谢谢你的所有答案,但我想我找到了罪魁祸首.在我的程序中重新定义__FD_SETSIZE后,一切开始变得更快.当然ulimit也需要提升,但没有__FD_SETSIZE我的程序永远不会利用它.