什么可能导致 TCP / HTTP 请求延迟/滞后

什么可能导致 TCP / HTTP 请求延迟/滞后

我们有一个设备,它可以以固定的时间间隔发送带有 JSON 有效负载的 POST 请求或 TCP 消息,通过互联网发送到位于另一个位置的运行节点应用程序的服务器。

JSON 负载包含一个时间戳和一些其他值。我们将该时间戳与服务器的时间戳进行比较,以计算时间差,我们称之为滞后。

间隔为 100 毫秒。我们的经验是,最初,延迟低于 200 毫秒。我们让系统运行几天,观察到延迟在增加,2-3 天后为 2000 - 3000 毫秒,并且进一步增加……6 天后约为 6000 毫秒。

一旦我们重新启动服务器进程,延迟就会恢复正常,因此我认为发送方没有问题。POST 请求实现和 TCP 消息实现都发生了这种情况。

有人知道为什么会发生这种情况,或者如何缩小问题范围吗?

答案1

服务器和发送方的时钟是否同步?每天 1 秒的时钟漂移并不罕见。

答案2

这表明存在所谓的资源泄漏。随着队列、内存或其他资源的累积,应用程序中的某些东西正在逐渐减慢处理速度。

我建议在你的 NodeJS 代码中添加工具来跟踪任何内部队列、分配的内存、数据库查找等。记录所有内容,这样你就可以开始识别瓶颈在哪里。

如果您在云中运行,那么有一些很好的工具可以帮助您检测代码,例如 AWS X-Ray。

相关内容