Bitcurrent 和 Webmetrics 针对 5 种不同的云平台——Amazon、Google、Rackspace、Salesforce.com 和 Terremark 进行了为期一个月的大量测试,尝试测量每种平台的性能。其中一个结论是每种平台针对不同类型的应用各有所长。
为了测试云性能,报告作者选取了 4 种类型的测试并在 5 个云平台上运行 5 个原生应用作为基准。
测试
- 请求小对象——1x1 像素的 GIF 图片
- 请求大对象——2MB 大小的图片
- 执行 CPU 高消耗的任务——100 万次 sine(正弦)和加法操作。由于 Salesforce.com 的平台限制,负载是 10 万次。
- 执行 IO 高消耗的任务——通过 MySQL 数据库查询 50 万行的数据表(Amazon、Rackspace、Terremark 使用了显式缓存、Salesforce.com 使用了 data store,Google 使用了 BigTable)。
原生应用
为何给原生应用作基准测试,作者选择了 5 款为平台定制开发的真实网站。针对 Salesforce.com 的网站采用 Apex 编写,针对 GAE 的应用采用 Java 和 Python 编写,网站运行在 Amazon 和 Rackspace 中 Xen 服务器上的 Linux 系统上,而 Terremark 则运行在 VMware VM 上。应用的名字没有被公开。
为了实施测量,作者使用了 WebMetrics 的服务,在一个月内从世界不同地方以不同的间隔时间发送请求。
Salesforce.com 和 GAE 提供了 PaaS 服务,而 Amazon、Rackspace 和 Terremark 提供了 IaaS 服务。
结果
5 个云平台上 4 种测试的延迟如下所示:
所有平台针对小对象都表现不错,而在大对象方面,PaaS 平台比 IaaS 更出色。Salesforce.com 在 CPU 高消耗的任务中,虽然计算压力只有其他平台的 10%,但是表现依然糟糕。Google 和 Rackspace 在 IO 测试中脱颖而出。
针对原生应用的测试结果如下所示:
PaaS 云表现更好,之后是 Amazon 和 Rackspace,而 Terremark 由于响应时间在 12 秒的延迟所占比例较大而排名末尾。
结论
性能测量报告的作者总结了测试过程中的经验教训并列举了一些结论:
- 小心你的邻居。我们已经确切地发现一些云应用会同时出现性能下降,所以你肯定会被使用同一片云的其他应用所影响。
- 理解你所在云的配置。上文显示的图表明不同的云擅长不同的任务。你需要选择虚拟机器的容量——CPU、内存等等——以便提供出色的性能。
- 安插个内线。当你制定监控策略时,需要定制代码以执行后台函数,可以尽快地找到问题。
- 根据工作负载选择 Paas 还是 IaaS 平台。如果你乐于重构你的应用以利用“大数据”系统如 BigTable,那么选择 PaaS 云伸缩性很好。另一方面,如果你需要独立的机器,那么不得不在 IaaS 配置中构建弹性。
- Big data 不是白来的。使用大型、稀疏的数据存储可能很好,但是这需要花时间来导入(在 Google 的测试中用了 37 个小时!),这可能不符合你的应用使用模式。
- 监控使用情况。在 PaaS 中,如果超过了速率限制,你的用户会得到错误信息。
- 排除故障很困难。为了定位问题,你需要分析互联网的数据、云提供商的数据和应用的各个层次。当你使用专有的基础设施时,无需花费太长时间来排除第三方的问题(如共享带宽引起的竞争或者 I/O 阻塞)。
- PaaS 意味着你们在同一只篮子里。我们注意到如果你是用 PaaS 平台,当云性能下降时,所有应用也紧随其后。在 IaaS 中,存在更多独立的 CPU 和服务器的快速反应——但是你仍然会面对共享存储和网络带宽的竞争。
完整报告包含了在每个云平台的性能基准测试中收集的详细信息。
注意:因为测试结果受不同类型的工作负载、代码、步骤、实际部署环境和其他因素的影响,报告的作者建议读者仅作参考。本研究并不想特意推荐某一款云平台。
查看英文原文: Measuring and Comparing the Performance of 5 Cloud Platforms
评论