Linux Posix队列打开的文件太多

时间:2014-03-18 04:27:08

标签: c++ linux posix

在我的应用程序中,我有不同的模块通过posix队列进行通信,问题是我在限制遇到时遇到上述错误,我在两者中都设置了限制

sysctl fs.file-max = new_value 

ulimit -n 

但这是一些硬编码值,是否有任何最佳实践可以克服这个问题?我尝试通过mq_close关闭描述符,但随后应用程序中的所有模块都可以随时使用任何消息。所以我无法关闭所有的描述符。

1 个答案:

答案 0 :(得分:1)

linux / UNIX软件限制和资源限制有两种类型的资源限制。硬限制。您可以设置的最大描述符达到硬限制。有一些方法可以增加硬限制,但坦率地说,我从来没有尝试过如此&由于两个原因,我不建议这样做:

  1. 同时打开太多描述符会降低程序的性能。
  2. 甚至不需要增加硬限制,因为如果在程序中正确关闭未使用的描述符,您将发现自己甚至不需要。想象一下,为每个新请求打开新描述符的Web服务器也不需要增加硬限制。
  3. 最后我建议你甚至增加软限制,请使用程序中的setrlimit函数,因为增加shell的限制是临时的&如果你在配置文件中设置它将增加所有程序的限制。

相关问题