我最近设置了一个基于 Node.js 的 Web 套接字服务器,该服务器已经过测试,可以在一个小型 EC2 实例 (m1.small) 上每秒处理大约 2,000 个新连接请求。考虑到 m1.small 实例的成本,以及将多个实例置于支持 WebSocket 的代理服务器(例如 HAProxy)之后的能力,我们对结果非常满意。
但是,我们意识到我们还没有使用 SSL 进行任何测试,因此研究了许多 SSL 选项。很明显,在代理服务器上终止 SSL 连接是理想的,因为这样代理服务器可以检查流量并插入 X-Forward-For 之类的标头,以便服务器知道请求来自哪个 IP。
我查看了 Pound、stunnel 和 Stud 的 SSL 终止解决方案,所有这些都允许终止 443 上的传入连接,然后传递到端口 80 上的 HAProxy,然后将连接传递到 Web 服务器。然而不幸的是,我发现将流量发送到 c1.medium(高 CPU)实例上的 SSL 终止代理服务器会非常迅速地消耗所有 CPU 资源,并且每秒只有 50 个左右的请求。我尝试使用上面列出的所有三个解决方案,并且所有这些解决方案的表现与我假设的大致相同,无论如何它们都依赖于 OpenSSL。我尝试使用 64 位非常大的 High CPU 实例 (c1.xlarge),发现性能仅与成本成线性关系。因此,根据 EC2 定价,我需要为每秒 200 个 SSL 请求支付大约 600p/m 的费用,而不是 2 的 60p/m,每秒 000 个非 SSL 请求。当我们开始计划每秒接受 1,000 或 10,000 次请求时,前一种价格很快在经济上变得不可行。
我还尝试使用 Node.js 的 https 服务器终止 SSL,其性能与 …
我们正在构建一个基于套接字的服务,其中延迟是最重要的,因此我们将服务器分布到世界各地的 7 个数据中心。然而,虽然我们知道我们正在使服务器更接近客户,但很难知道这有多有效,重要的是,与我们的竞争对手相比,这有什么不同。
因此,我们希望运行简单的脚本来测试我们的服务和我们的竞争对手的延迟和吞吐量,这在使用 Amazon 时很容易,但 Amazon 只有 7 个数据中心。例如,我们想知道我们在南非、澳大利亚、中国、秘鲁等世界各地的表现如何。
有谁知道我们可以利用其全球基础设施并运行一些脚本来测试这种性能的任何服务?明显的竞争者是像 Monitis 这样的人,但我认为他们不允许我们运行自定义脚本,只能运行标准协议监视器。