![AWS - 用于 NodeJS API 的四个负载平衡 t3.micro 与一个 t3.medium](https://linux22.com/image/729332/AWS%20-%20%E7%94%A8%E4%BA%8E%20NodeJS%20API%20%E7%9A%84%E5%9B%9B%E4%B8%AA%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1%20t3.micro%20%E4%B8%8E%E4%B8%80%E4%B8%AA%20t3.medium.png)
我正在尝试决定这两种设置中的哪一种会让我更性价比考虑到我将在集群模式:
所有价格均为当前价格新加坡地区。
t3.micro 的四个实例(2 个 vCPU,1 GiB RAM)
- 实例:0.0132 x 4 = 0.0528 美元/小时
- 应用程序负载均衡器:0.0252 美元/小时
t3.medium 的一个实例(2 个 vCPU,4 GiB RAM)
- 实例:0.0528 x 1 = 0.0528 美元/小时
很明显,使用 t3.micro 和 ALB 会花费更多但会给我(1 vCPU = 1 个节点),总共8 节点集群但两者各自共享1GiB内存。
另一方面,我会2 个节点集群获得充足的 4 GiB 内存。
假设任一设置都会收到相同的负载/进程/请求。我很难确定哪个性能更好,特别是因为我发现 nodejs 在集群模式下性能更好(当一个实例有超过 1 个核心时)。其中哪一个能给我带来更高的性能和成本?
答案1
完全取决于工作量以及是否需要 TLS/SSL。使用类似的问题集进行了一些测试。就 CPU 使用率而言,很快就清楚了,处理大量小请求会在 TLS 端产生相当多的开销,这些开销可以在负载均衡器上终止,从而将 CPU 使用率从实例上转移出去。
通过多个可用区域中的实例进行负载平衡也可以被认为更具弹性。
另一方面,在具有单一操作系统级缓存机制的单个实例上,内存使用率很可能更高。此外,操作系统开销仅存在一次。
如果您确实想优化设置,最好的方法可能是设置一些负载测试并比较结果。t2.micro 可能会很快耗尽 CPU,但这也严重依赖于要运行的应用程序。如果内存需求大,最好在实例上增加更多内存。
答案2
node.js
除了在实例上运行API 之外EC2
,您还可以尝试使用 AWS Lambda。
AWS Lambda 每月 100 万个请求免费,此后每 100 万个请求收取 0.20 美元。
- AWS Lambda 定价
- Node.js 应用程序使用 AWS Lambda 运行