我正在使用epoll(边缘触发)和线程在线程网络服务器上工作,并且正在使用httperf对服务器进行基准测试。
到目前为止,它的性能确实非常好,或者几乎完全按照发送请求的速度执行。直到1024屏障为止,那里的所有内容都减慢到大约30个请求/秒。
在64位Ubuntu 9.04上运行。
我已经尝试过:
andri @ filefridge:〜/ Dropbox /学校/ Group 452 /代码/服务器$ ulimit -n 20000
我很确定这种速度减慢正在操作系统中发生,因为它是在事件发送到epoll之前发生的(是的,我也增加了epoll的限制)。
我需要基准测试程序可以减慢多少并发连接,直到它开始变慢(不影响操作系统)。
如何使程序运行超过1024个文件描述符?
这个限制可能是有原因的,但是出于基准测试的目的,我需要将其删除。
感谢您的所有回答,但我想我已经找到了罪魁祸首。在我的程序中重新定义__FD_SETSIZE之后,所有东西开始以更快的速度移动。当然,还需要提高ulimit,但是如果没有__FD_SETSIZE,我的程序就永远不会利用它。