Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想创建一个服务器基础架构,允许 500 个客户端同时连接所有客户端并具有无限期的连接。计划是让客户端连接到服务器上的 TCP/IP 套接字并让它们保持连接,服务器随机向客户端发送数据,客户端随机向服务器发送数据,类似于小型 MMOG,但几乎没有任何数据. 与每个客户端每 15-30 秒进行一次 TCP 轮询相比,我提出了这个计划。
我的问题是,在保持这些连接打开的情况下,这是否会导致大量服务器带宽在空闲时使用?这是不深入 TCP 的最佳方法吗?
TCP 在空闲时不使用带宽,如果启用了“keep-alive”,则可能每隔一段时间(默认为 2 小时)使用几个字节。
500 个连接不算什么,但epoll()它是减少系统开销的好选择。5000 个连接可能会开始成为问题。
epoll()
带宽不是您主要关心的问题,但是您可以打开的连接数量是有限的(尽管它非常高)。
但是,如果每 15 秒轮询一次足够快,我会认为保持连接打开是一种浪费。