在我的应用程序中,我有不同的模块通过posix队列进行通信,问题是我在限制遇到时遇到上述错误,我在两者中都设置了限制
sysctl fs.file-max = new_value
和
ulimit -n
但这是一些硬编码值,是否有任何最佳实践可以克服这个问题?我尝试通过mq_close
关闭描述符,但随后应用程序中的所有模块都可以随时使用任何消息。所以我无法关闭所有的描述符。
答案 0 :(得分:1)
linux / UNIX软件限制和资源限制有两种类型的资源限制。硬限制。您可以设置的最大描述符达到硬限制。有一些方法可以增加硬限制,但坦率地说,我从来没有尝试过如此&由于两个原因,我不建议这样做:
最后我建议你甚至增加软限制,请使用程序中的setrlimit函数,因为增加shell的限制是临时的&如果你在配置文件中设置它将增加所有程序的限制。