简单介绍一下历史,我们的产品目前已在大量 DO 和 Linode 以及一些 AWS 实例上运行。我们的堆栈包括 Python-Flask Webapp、Mongo(分布式)、Elastic Search、Rabbit MQ 和 Celery。我们每天大约处理 2-3 次大量数据转储(约 4-5GB)。
到目前为止,我们的服务器已在 DO、Linode 和大量 AWS 上广泛运行。虽然到目前为止我们对此感到满意,但我们也将 AZURE 纳入考虑范围,因为我们发现他们的一些设计非常有趣,特别是他们的 NSG 和内部负载均衡器等。
因此,剩下的问题是,在这些提供商之间,最好的衡量标准是什么,哪个在性价比方面更适合我们。到目前为止,我们运行了大约 80-90 个 16GB 实例,但随着 Azure 的加入,
1) 我们想知道比较这 4 家提供商之间的性能的最佳方法是什么。我具体谈论的是 IO、内存和网络。
2)此外,到目前为止,是否有人对这 4 家供应商进行过一些很好的基准比较?
答案1
每个提供商的衡量标准都不同,并且会在其文档中以不同的方式(以最佳方式)呈现性能细节,您唯一能知道哪个平台最适合您需求的方法就是根据对您来说重要的指标进行测试。网上有很多人做过比较,但最终这些比较都是从他们想要实现的目标的角度进行的,而且可能更重要的是,由于云平台发展如此迅速(尤其是 AWS 和 Azure),这些信息很可能已经过时了。
我的建议是确定哪些指标对您来说很重要(如果您正在监控应用程序,您应该已经知道了),然后在每个平台上执行自己的测试。我还会确保您知道通过移动平台想要实现什么目标,如果一切顺利,您希望通过移动获得什么,是成本还是性能等。然后,您可以平衡在性能方面观察到的结果与您的目标。
至于如何实际测量性能,您没有提到您是只使用 IaaS 机器,还是使用 PaaS,但假设它是 IaaS,那么您可以考虑使用自己的监控解决方案(无论它是什么)来监控虚拟机中的指标,这可能是比较同类产品最简单的方法,前提是您有现成的东西可以使用。或者,您可以使用平台内置的监控解决方案(Azure Monitor、AWS Cloudwatch)等,但显然这意味着以不同的方式为每个平台收集数据。