所以我遇到了一个独特的问题。我们的应用程序旨在使用一次性使用的特殊链接来处理大量文件。我们一直在使用 ELB,但注意到一个有趣的“错误”,如果您开始获得大量流量或加载,ELB 似乎会尝试扩展并重试连接。这反过来会导致我们的系统在下载完成之前使链接无效。
于是我迅速组装了一个 nginx 代理服务器来测试这个问题,在这个设置中,连接不会失效,但我发现性能下降了大约 2/3 到 1/2。由于我被锁定在 AWS 提供的带宽上,所以我无法向实例投入更多带宽,那么我有什么替代方案吗?也许我在实例/nginx 方面的配置不正确,或者我需要转移到 RR DNS 之类的东西并为此付出代价。
答案1
如果 www.example.com 正在负载平衡到 server1.example.com 和 server2.example.com,请将您的一次性链接明确链接到 server1/2.example.com(或当前实例的 AWS CNAME,如果您的实例更改频繁以至于您的 DNS 不一定是最新的)。
答案2
我不确定您的应用程序有什么要求,但由于您已经在使用 AWS,您可以考虑使用 S3 的一项功能,该功能允许您给出一个在未来特定时间点(例如两分钟后)过期的签名 URL。这将让您的用户重试失败的连接,但不会让他们在过期时间之后将其传递给其他人使用。
如果 S3 适用于您的应用,它还可以消除您必须自己运行下载服务器的巨大负担,因为 S3 会处理所有工作。