确定数据包/更新首先到达哪台机器

确定数据包/更新首先到达哪台机器

我在一个区域(不同的可用区域)内设置了两个独立的 AWS 虚拟机,它们都通过 WebSocket(在 Python 中)连接到同一主机服务器(也由 AWS 托管)的不同负载均衡器(Cloudfront),并每 5 毫秒接收一次频繁的小型 WebSocket 有效负载。

两台机器都接收相同的更新,我想测量哪台机器上的更新/有效载荷/数据包首先到达

本质上,我想弄清楚哪个负载均衡器“更接近”主机,因此在传输信号时具有最小的延迟开销,因为我的应用程序对延迟非常敏感。

答案1

考虑使用AWS 时间同步服务并记录数据包到达时间,然后比较日志。

不过,对于初学者来说,只需记录数据包到达时间,并在实例上使用常规 NTP 管理命令来检查“根分散”,这是实例和根时间服务器之间的时间误差的估计值。这些误差很可能在 1 毫秒以下,因此如果到达时间的差异大于两个根分散的总和,则不需要时间同步服务。

实际上,如果两个实例在其服务器链中共享任何 NTP 服务器(直至根时间服务器),则可以使用来自该共享服务器的分散。

我假设 ECS 实例默认运行 NTP,IIRC 是正确的,但我不确定。

当记录数据包到达时间时,我会在消息中明确包含本地时间以确保万无一失,但IIRC 与您在 Cloudwatch 日志中获得的时间戳几乎相同。

相关内容