在尝试研究实现消息队列服务器的最佳方式后,我提出了这个问题。为什么操作系统会对进程和全局系统可以拥有的打开文件描述符数量设限呢?
我目前的服务器实现使用zeromq,并为每个连接的websocket客户端打开一个订阅器socket。显然,单个进程只能处理到达fd上限数量的客户端。
当我研究这个主题时,我发现很多关于如何将系统限制提高到64k fd之类的级别的信息,但它从未提到它如何影响系统性能,以及为什么最初设置为1k或更低?
我的当前方法是尝试使用自己的循环中的协程,以及所有客户端及其订阅通道的映射,向所有客户端分派消息。但我很想听到一个确定的答案,关于文件描述符限制以及它们如何影响那些尝试在每个客户端级别上使用具有持久连接的应用程序。