【发布时间】:2023-03-04 07:24:07
【问题描述】:
在尽我最大的努力研究实现消息队列服务器的最佳方法后,我提出了这个问题。为什么操作系统会限制一个进程和全局系统可以拥有的打开文件描述符的数量? 我当前的服务器实现使用 zeromq,并为每个连接的 websocket 客户端打开一个订阅者套接字。显然,单个进程只能处理客户端到 fds 的限制。 当我研究这个主题时,我发现了很多关于如何将系统限制提高到高达 64k fds 的信息,但它从未提到它如何影响系统性能以及为什么它一开始是 1k 或更低? 我目前的方法是尝试使用协程在其自己的循环中向所有客户端发送消息,以及所有客户端及其订阅通道的映射。但我很想听到关于文件描述符限制的可靠答案,以及它们如何影响尝试在每个客户端级别上通过持久连接使用它们的应用程序?
【问题讨论】:
-
好的,所以我从所有这些答案中收集到 1)归结为可用 RAM 的问题 2)如果可移植性是关键,Web 服务器应用程序不应依赖使用大量动态分配的文件描述符.因为那些实现服务器的人必须调整他们的服务器 FD 限制。
标签: websocket operating-system message-queue zeromq file-descriptor