随着云计算行业发展越发成熟,厂商们服务器迭代越来越快、服务器的种类也是五花八门,不同的厂商的云服务器性能也让企业们非常关注。
因此,笔者选取了上述几家云厂商的主力产品,分别从计算、网络、存储等多维度进行深度分析,并在MySQL、Redis和Ngnix等典型场景下进行测试。
准备:机型选定
此次评测我们选取了各家云厂商最新CPU对应的规格,均为搭载英特尔的Cascade Lake CPU的中主频机型,同样选择8核32G的机型,这是一般企业在平日业务中用得最多的规格,最接近实际业务需要。操作系统也都选择了一样的CentOS 7.4。
目前谷歌云并未进入中国市场,对于国内用户来说,使用非常不方便,因此就不进行评测了。
我们分别选定了AWS的通用实例m5、微软Azure常规用途系列 Ddv4、阿里云六代增强型实例g6e、腾讯云的标准型 S5、华为云通用计算增强型c6s。由于华为没有32G内存的,我们选择了8核16G的c6s。这里没有选择华为的c6型是因为其c6的vCPU不与物理CPU的超线程绑定,无法保证稳定的计算性能。
服务器最重要的无非是计算、存储、网络性能,接下来,我们会这三大方面去评测。最后,我们还会看下特定业务运行在几家的服务器上的情况。
一、计算性能
1、整体性能
首先我们对五款云服务器做整体计算性能的跑分。做任何的业务计算都需要占用大量CPU的运算能力,比如直播等视频编解码等,业务高峰期CPU的利用率经常会达到90%以上。
测试工具:我们选择了评测工具SPEC CPU。SPEC CPU是标准性能评价机构 (Standard Performance Evaluation Corporation,简称SPEC)开发的用于评测CPU性能的基准程序测试组,是一套CPU子系统测试工具。处理器、内存和编译器都会影响最终的测试结果,而I/O(磁盘)、网络、操作系统和图形子系统对SPEC CPU2000的影响非常小。目前,SPEC CPU是业界首选的CPU评测工具。我们使用了其中的SPECint基准测试程序来评测各家云服务器的整型处理性能。
结果:我们可以看到,Azure的计算性能分最好,阿里云排名第二,腾讯云和AWS次之,华为云的c6s分数最低。
2、浮点计算能力/CPU性能
接下来,我们看下浮点运算能力,包括单核、多核浮点性能。使用的工具是Super Pi,这是一个比较聚焦和简单的算例,专门算圆周率,跟CPU的主频密切相关,耗时越短性能越高。
结果:我们可以看到,这个结果跟CPU主频确实是密切相关的。在多核性能下,耗时最短的是Azure和华为云,然后是阿里云,最后分别是AWS和腾讯云。
除了CPU之外,内存的性能在一定程度上决定系统表现,特别是针对大量访问内存的场景,如关系型数据库。而几乎所有的业务,都会用到关系型数据库。内存性能主要分为两个方面,内存带宽和内存延迟。
3、内存带宽
测试工具:Stream是业内公认的用于内存性能评估的基准测试软件,其包括Copy(复制)、Scale(乘法)、Add(加法)以及Triad(三者复合)四种不同操作情况下的内存带宽表现。
测试结果:阿里云g6e与华为云c6s差不多,算并列第一,腾讯云第二,AWS第三,Azure明显落后。
4、内存延迟
测试工具:MLC为 Intel官方提供的免费内存测试工具,可以有效方便地测试内存延时。
测试结果:华为云的内存延时最低,仅为85ns;阿里云、腾讯云也在90ns左右,剩下分别是Azure、AWS。
二、网络性能
接下来是网络性能,我们主要看PPS和时延。
1、PPS
PPS是每秒传输的数据包数量,直播等网络要求较高场景对PPS要求比较高。单实例PPS越大,网络性能越强,往往意味着可支撑更大的业务量。
在业务运行过程中,如果PPS比较高,QPS也会相对应更高。比如在非常常见的发弹窗场景,PPS高的机器能承载的发弹窗数量更高,有利于节省业务成本。
测试工具:Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。
测试方法:在云主机A上安装netperf的netserver作为服务器端,云主机B上安装netperf作为客户端,在不运行应用情况下,云主机B压测云主机A(数据包大小1),测试云主机A的网络 UDP 收PPS性能。
网络压力持续时间为5分钟,取云主机A收到压力50秒后持续200秒的PPS平均值。
测试结果:阿里云g6e的网络PPS上明显领先,AWS m5和华为云c6s居中,腾讯云S5次之,Azure Ddv4明显落后。
这里除了AWS厂商没有对实例规格做了QOS规定,可能就是没有限速,而其他云厂商都做了QoS(质量控制)限制,且是符合QoS要求的,所以我们更应该看下面一定压力下的延迟数据,这个对于用户来说更有意义。
2、网络延迟
延迟是大多数企业非常关注指标。因为比如在游戏和直播的业务,对延迟是十分敏感的,这是最关键的指标之一。
测试工具:sockperf,是基于套接字API的网络基准测试实用程序,旨在测试高性能系统的性能(延迟和吞吐量),也适用于测试常规网络系统的性能。它涵盖了大多数套接字API调用和选项。
测试方法:用sockperf测试服务器在PPS 5000压力环境下的时延。
测试结果:阿里云的网络延时非常出色,AWS的也不错,微软和华为的机器延迟在40-50us左右,腾讯云S5的延时则明显高于其他厂商。
三、存储性能
存储性能取决于不同的存储实现,现阶段不同的云服务器厂商会提供不同的存储解决方案以应对各种使用场景,目前SSD已经成为趋势,Ddv4 暂时不能挂载超级SSD盘,无法测试。
对存储需求最大主要是跑MySQL的场景,只需要用到一块ESSD云盘。但一般来说厂商们出于QoS(质量控制)的原因,即为了保证每台实例的体验(以免有用户买了小规格云盘,却占用了大量带宽),会根据磁盘大小对云盘性能进行限制,因此我们选择了比较大的1.1T的云盘来测试,主要测的是IOPS和延迟。
1、IOPS
存储IOPS影响着单台机器能承载的业务量。电商场景就是非常典型的高IOPS的场景:用户下单,业务场景一般有查询和写入两种情况,查询一般会用很多缓存;写入场景就需要数据及时落盘,要求提高数据的写入并发能力,需要很高的存储IOPS。尤其在大促场景下,单盘更大的IOPS可以支撑更多用户下单。
测试工具:fio是IO性能测试工具,可以运行在Linux、Windows等多种系统之上,可以用来测试本地磁盘、网络存储等的性能。
测试方法:我们在不运行应用情况下,云主机挂载1100G的 SSD云盘,并通过fio压测(4K数据块,随机写、随机读,队列深度为64,numjobs为8)。对存储持续压测一段时间,取write/read的iops值。
结果:阿里云最好,领先其他几乎一倍,华为云次之, AWS和腾讯云则是差不多。
2、读写延迟
存储延迟则影响着用户的体验,比如在电商场景下,延迟越低用户下单的响应速度越快。
测试工具:fio
测试方法:Linux 云主机安装 fio,在不运行应用情况下,云主机挂载1100G的 cloud_essd 硬盘,并通过fio压测(4K数据块,随机写、随机读,队列深度为1,numjobs为1)。存储压力持续时间一段时间,取write/read的lat值。
结果:综合来看,阿里云延时最小,之后分别是AWS、Azure和华为云。
四、特定场景测试
即便跑分性能在高,云服务器毕竟是用来跑业务的,机器的性能最终还是要看E2E的性能。因此,我们选择了最为常用的几项应用。
1、MySQL
MySQL 是最流行的RDBMS(Relational Database Management System:关系数据库管理系统),在WEB应用方面 MySQL 是最好的RDBMS应用软件之一。
其因为开源、速度、可靠性和适应性而被广泛使用。因而,运行MySQL的能行,也是衡量云服务器表现的一个重要指标。
测试工具:sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库;主要包括以下几种测试:cpu性能、磁盘io性能、调度程序性能、内存分配及传输速度、POSIX线程性能、数据库性能(OLTP基准测试)。这里主要使用对数据库性能的测试。
测试方法:选取相同配置的2台Linux云主机进行配置:云主机A上安装 mysql 作为服务器端,云主机B上安装mysql client 及 sysbench 作为客户端,在不运行其它应用情况下,云主机B压测云主机A,测试云主机A的 mysql 服务性能,结果为取 QPS。网络压力持续时间为10分钟,使用 sysbench 进行压测,获取平均每秒请求数QPS。
结论:阿里云在 MySQL的场景下性能表现突出,AWS和华为的次数不相上下,腾讯明显落后。
由于微软Azure本规格并不支持超级SSD盘,挂载普通云盘测试MySQL意义不大,因此略去。
2、Redis
Redis 是一款开源、高性能的key-value分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,当前最热门的NoSql数据库之一。
缓存系统、排行榜(如微博的热搜)、最新列表(如最新的视频或新闻列表)、分布式锁和单线程机制(如秒杀系统)等,都是Redis应用的典型场景,在大多数互联网业务中都非常常见。
测试工具:Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。
测试方法:与MySQL的类似,配置两台云主机,分别作为客户端与服务器端进行压测,获取平均每秒查询数,分别压测 get 、set、sadd、mset 四种方式。
结论:综合来看,阿里云g6e跑Redis的性能同样是一骑绝尘,华为云和AWS不相伯仲,华为云险胜,腾讯次之,微软Azure排名最后。
3、Ngnix
Nginx是一款被广泛应用的高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。cpu、内存等资源消耗却非常低,运行非常稳定。
测试工具:使用wrk进行压测,wrk是一款简单的HTTP压测工具,能用很少的线程压出很大的并发量。
测试方法:与上类似,在不运行其它应用情况下,作为客户端的云主机B 启动wrk 压测作为服务器端的云主机A,测试云主机A的 nginx服务接受性能。
压测 wrk的测试参数设定,-c参数连接数设为1000, -t线程数根据云主机B的核数计算得出(2倍核数), 获取平均每秒查询数,分别压测长连接和短连接两种场景。
结论:华为云在长连接的QPS上稍胜一筹,短连接则略有逊色;阿里云则相反;接下来是AWS和腾讯云;微软Azure再次排最后。
总结:综合打分
我们可以根据上述跑分的排名,将各厂商每一项的排名记录下来,并加总,最后总分最小的,就是服务器总排名最高的厂商。
根据得分表来看,阿里云位列综合排名第一,在PPS、存储IOPS上有相当大的领先优势。在基础性能(CPU、内存)部分,每个厂商各有千秋,这个是硬件选型决定的,测出来的数据符合各个厂商硬件预期。
综合来看,阿里云的g6e的表现还是非常出色的,搭载的CPU虽然不是频率最高的,但存储和网络占据绝对性能优势,这依赖于阿里云在服务器架构上的创新,对网络硬件加速及存储技术都做了创新优化。
需要特别指出是,阿里云g6e在E2E方面的表现不俗,已领先国际友商一大截。E2E展现在使用云服务器时上层业务的表现,是最能体现综合性能优势的。最终对比下来,阿里云这款g6e实例确实达到了不错的效果。
其次是华为云,华为云在内存性能这块非常突出,如果内存时延敏感可以考虑选择华为云。其综合能力也不错,同样的CPU性能没拿到第一,但在E2E性能方面排名基本靠前。
接下来就是云计算祖师爷祖AWS,整体测试下来的感觉是比较均衡发展的,各方面都OK,唯独在内存延迟这里明显落后,主频的话由搭载的CPU决定,表现一般。
微软Azure在CPU这块性能第一,网络延时也还可以,不过因为没法挂载高性能云盘不好判断存储性能,其他性能表现一般,而且考虑到Azure在国内的布点,对用户又不太友好,着实不大推荐,如果业务对主频敏感可以考虑。
最后是腾讯云,腾讯云的S5在计算性能、内存带宽和内存延时上的跑分还不错,Ngnix的性能表现也OK,浮点运算方面它虽然排第二,其实各家相差不大,但网络延时方面S5显然与其他实例差距有点大。
各家表现都已经一目了然,在买的的时候可能还得考虑性价比。由于价格取决于各家云厂商折扣活动非常多,对不同用户也有不同的优惠政策,大家可以选购的时候结合自己的折扣考虑。
现在,时代互联携手阿里云、百度云、腾讯云强强合作推出顶级云产品。抢先体验:https://now.cn/fcloud/cloud_aly.php?now_wxx_2023