相关疑难解决方法(0)

处理超过1024个文件描述符,在Linux上的C语言中

我正在使用epoll(边缘触发)和线程的线程网络服务器,我正在使用httperf来对我的服务器进行基准测试.

到目前为止,它的表现非常好或几乎完全符合发送请求的速度.直到1024障碍,一切都放慢到大约30个请求/秒.

在64位的Ubuntu 9.04上运行.

我已经尝试过了:

  • 成功增加文件描述符的ulimit数.它只是没有提高1024个并发连接以上的性能.

    andri @ filefridge:〜/ Dropbox/School/Group 452/Code/server $ ulimit -n
    20000

我很确定这种减速是在操作系统中发生的,因为它发生在事件发送到epoll之前(是的,我也增加了epoll的限制).

我需要对程序可以处理的并发连接数进行基准测试,直到它开始变慢(没有操作系统干扰).

如何让我的程序运行超过1024个文件描述符?

这个限制可能是有原因的,但是出于基准测试的目的,我需要它.

更新

谢谢你的所有答案,但我想我找到了罪魁祸首.在我的程序中重新定义__FD_SETSIZE后,一切开始变得更快.当然ulimit也需要提升,但没有__FD_SETSIZE我的程序永远不会利用它.

c linux networking multithreading

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

linux ×1

multithreading ×1

networking ×1