我在 AWS 上有一台客户端服务器,我想减少这台服务器和我的 EC2 实例之间的延迟。我在一个可用区域租用了两台相同的服务器,并开始向客户端的 API 发送请求。结果发现这些服务器的延迟不同:95% 的百分位数相差约 5 毫秒(即平均延迟的 30% 左右)。我的目标是减少延迟。
我认为我可以租用更多服务器并重复这些实验,但这将是我调查的下一步。对我来说,第一步是了解同一区域中的服务器在 API 响应延迟方面存在如此大差异的原因以及哪些指标可以解释这一点?
减少延迟的第二种方法是租用裸机服务器而不是 EC2,但这似乎太贵了。而且我担心如果租用的服务器距离客户端服务器较远,情况会更糟。
那么请告诉我:
- 您对如何减少延迟有什么建议吗?
- 我如何在同一个 AWS 区域内租用离我的客户最近的服务器?
答案1
即使在同一个可用区内启动,您的 EC2 实例也可能位于不同的数据中心。通过反复试验将它们整合在一起将是一场赌博。
看一下“放置组”。它们用于启动多个 EC2 实例,以便让它们在同一个数据中心启动,从而减少它们之间的延迟。
如果您有一个不在置放组中的现有 EC2 实例,我认为无法将其添加到置放组中。
答案2
您可以先确保您的实例位于同一物理可用区中,这并不总是意味着同一栋建筑。在资源访问管理器 (RAM) 中,您的逻辑可用区 ID 和物理可用区 ID 之间存在映射。这在账户之间是随机的 - 您账户中的 AZ-A 可能是另一个账户中的 AZ-C。这是因为大多数人将大部分资源放在 AZ-A 中,因此可以平衡。
除此之外,我认为除了反复试验之外,你没有别的办法来获得一个对你的客户端机器具有低延迟的实例。我非常确定置放群组如上所述,这是针对单个帐户内部的,因此如果您需要超低延迟(5ms 还不错),您可能必须在同一个帐户中。