【发布时间】:2022-01-07 23:44:26
【问题描述】:
NodeJS 每秒可以接收和发送的 UDP 数据包数量是否有上限?我正在开发一个游戏,其中有一个发送心跳的连接管理器。但它最终无法正常工作,因为一旦我开始每秒多次发送带有世界状态的数据包,它就会减慢套接字上的所有内容(接收和发送)。
感谢您的任何回答!
【问题讨论】:
-
没有特别的硬编码限制。这取决于您的操作系统、您的 CPU 以及您为每个 UDP 数据包执行的处理量。它将帮助您诊断是否通过查看 nodejs CPU 使用率、操作系统网络管道使用率等来确定瓶颈在哪里......听起来你要么使一个 CPU 饱和,要么你的带宽已经饱和服务器。
-
@jfriend00 好的,我想我可能暂时把这个项目放在一边。如果我的项目一开始就已经占用了太多的 CPU 使用率,那么如果我再往前走,我无法预料它会变得更好。
-
您只是猜测是 CPU 使用率导致了问题吗?或者您是否真的看到一个核心的 CPU 利用率固定为 100%?另外,您每秒尝试发送多少个 UDP 数据包?如果您尝试每秒发送 500 个数据包,并且每个数据包需要 2ms 的 CPU 来处理,那么您就会使单个 CPU 饱和,就这样做。仅供参考,还有 nodejs 集群模块用于在您的处理中涉及更多 CPU(逃避 nodejs 的单线程/单 CPU 特性)。
-
嗯,你说得很好,似乎不是 CPU 使用率。奇怪的是,似乎事情正在爆发。就像当我也在向客户端发送数据包时,它正在接收来自客户端的消息。我使用 Godot 和 gd-com 作为我的客户,它开始看起来像是问题所在。当我使用 nodejs 客户端时,我没有遇到这个问题。
标签: node.js networking udp