如何以1.68美元/小时的成本获取百万TPS

Amazon EC2等云基础设施已经在世界范围内证明了它的价值,其易于扩展、即开即用、按时计费等特性更彻底地解放了开发人员的创造性;然而请不要忽略,虚拟化环境曾一度被认为是应用程序及数据库的性能杀手。

尽管性能方面,云供应商一直在寻找着改善途径,但作为用户的我们,自己的性能优化手段也必不可少。在实体服务器上,Aerospike曾展示过百万TPS的峰值,而现在,我们则将致力于提升云应用的性能,彻底打破云不等于高性能这个流言。

我们做过各种各样的云实例对比,这里将展示的是基于C3.8xlarge,如何以每小时1.68美元的成本获得每秒百万事务数据库的性能。

以下博文为译文:

越高越好

这个报告记录了大量Amazon EC2实例上的实验,下面则是见证奇迹的时刻,如何调整参数和指令以得到如此等级的价格性能比。

除非另有说明,实验将忠实执行以下设置:

单Aerospike内存NoSQL数据库服务器运行在一个独立的Amazon实例上。 1000万个对象,每个对象大小在100字节(10 bins或者columns,每个大小10字节),我们尽可能的调整。让对象体积保持足够小,这样就可以将所有的研究对象放到内存中。 使用具备Java基准工具的 Aerospike Java客户端,客户端进程使用非服务器实例模式。最大化客户端负载,并将之并行连接到Aerospike服务器上,具体使用数量取决于所运行的服务器实例类型。 为了最大化Amazon基础设施上的负载,在内存中使用了分布在整个key space上的100%读负载。 我们使用 spot-Instances来节省成本,在性能测试期间Spot和按需实例的性能基本相同。
步骤1:选择实例类型

在选择实例时基本按照以下准则:可以内存支撑整个数据库;可以支撑事务速率的网络和CPU。

我们不考虑i2和hs1实例,因为尽管他们虽然具备高存储能力,但是却会限制应用程序的内存使用。

我们调研了大量的EC2实例类型:

R——内存密集

C——计算密集

M——R和C的平衡

T——1个入门级的主机

不同类型的实例拥有不同的网络能力,因此我们调研了每个类型,并测试他们的最高带宽限制,使用发包工具从尽可能多客户端推送更大体积的包。经过调研后,结果如下:

Moderate(上限是100MBps)

High(范围在300Mbps到1.8Gbps之间)

10 Gigabit(峰值在8.8 Gbps左右)

我们没有考虑t1和m1.small,因为Amazon给它网络性能标注为“Low”,这个主要鉴于在“Low”或者“Moderate”标注的实例上,网络性能往往会成为实例瓶颈。此外,测试时M系列实例还不具备增大网络的选项。

步骤2:选择虚拟机

Amazon使用的是Xen,一个支持半虚拟化(PV)和全虚拟化的开源虚拟化平台,同时Amazon还有硬件虚拟化选项。我们同时使用了两个类型:

Para Virtualized Machine。首先,我们选择了c3.8xlarge。虽然它的成本很高,但是我们觉得仍然大有可为。开始时,我们在EC2-Classic网络中使用了一个PV AMI;但是随后我们发现,这些被标注10Gbps上限的机器只能获得1.8 to 2.2 Gbps的能力,主机的速率被限制到每秒8.5万包左右。而在测试了C3.2xlarge之后,我们发现这个主机仍然存在速度限制。再看CPU使用率,我们发现在半虚拟化主机中,严重负载下虚拟层的CPU使用率将达到恐怖的40%。使用这些主机,在Aerospike上我们可以获得8.5万TPS,速度限制再次出现。 Hardware Virtualized Machine。在AWS的说明中,基于网络加强实例的HVM会提供更高的网络性能,用户每秒将获得更高的packets。而在根据我们的测试显示,在没有其他增项时,TPS足足增加了3倍。同等端配置中,使用具备网络增强的c3.4xlarge,Aerospike可以获得21.5万的TPS。

鉴于同等价格的性能差异,对比PV实例,我们以后的测试将只是用HVM类型。

步骤3:Use PlacementGroups

Placement Groups是同一个Availability Zone中实例组成的逻辑组,在Amazon Virtual Private Cloud(VPC)中使用Use Placement Group允许应用程序低延时共享资源,完全平分10 Gbps网络。

我们使用Placement Groups来最大化性能,同时VPC是HVM实例的首要使用前提。

步骤4:Test Tenancy

我们分别测试了专用租用(dedicated tenancy)和共享租用(shared tenancy),在没有发现明显的差别后,我们果断的选择了共享租用。

步骤5:最小化CPUStealing

在AWS上运行应用程序最大的隐患就是计算资源不可预知性,当CPU被过度使用时,比如一个线程突然间占用了太多的CPU,EC2则会结束这个线程的时间片。同时,在下一个时间片,Amazon只会给它分配较少的资源。这会导致应用程序吞吐量的跌宕起伏,这一点可以通过控制应用线程CPU。这样一来,我们就可以保证应用程序拥有更稳定的吞吐率。

在我们的测试中,Aerospike完全可以避免CPU过用。这将给我们带来可预知的性能,即使重度负载时,应用程序也很少受到CPU窃取监视影响(从0.2到0.7)。

步骤6:网络

在实例类型、VN、Placement Groups、租用和调谐选定后,我们仍然不能确定TPS受限方面。着眼实例,我们发现系统因为单核上的interrupt(中断)处理仍然存在瓶颈。每个NIC看起来只提供一个interrupt队列,默认绑定到一个单核心。因此,我们需要一个更灵活的解决方案,我们尝试了四种方法:

1. IRQ Distribution:我们尝试强迫系统将irq分布到多个核心上(disable irqbalance + echo ffff > *smp_affinity),而随后就发现它被绑定到一个独立的核心上。因此,一个独立的irq不能在多个核心上进行分配。

2. Interrupt Coalescing:在EC2上,Interrupt Coalescing对CPU利用率有些许提升,但是没有转化为更好的处理。

3. More NICs:在测试了这两个途径后,Elastic Network Interfaces(ENI)无疑是下一个必经之路。ENI让用户可以给实例增加多个(虚拟)NIC。单一的NIC峰值在25万TPS左右,增加多个接口可以增加程序的响应性,在两个实例上配置4接口和4客户端,我们可以在单c3.8xlarge实例上获得96万的TPS。通过确保每个客户端都推送到专用接口,从而可以利用所有的NIC和CPU。同时,使用具备私有IP的ENI并不会增加花费。

4. Receive Packet Steering:另一个简单的途径是使用RPS(“echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus”)将irp分配给多核心。这将避免使用多 NICs/ENIs,同时还避免了管理上的复杂度,并带来多ENI差不多的TPS。配置RPS的单NIC可以将TPS推到80万,通过跨4个核心的interrupt。

在测试过不同组合的NICs和RPS后, 通过一些Aerospike调优(比如适当的调整服务线程配置),我们可以达到非常高的性能——5个客户端(C3.2xlarge)加一个运行在C3.8xlarge上的单节点Aerospike集群可以达到百万的TPS,而花费仅仅是1.68美元每小时。

** DI = 按需实例

** RI = 预留实例

** All则是单实例给定类型的成本分析,3年和1年预留实例term计算都使用了重度负载(100%利用率)

NB:这些实例有时候体现着性能的好坏,这些数字都是一个月以上运行得出的结果。

* Core Bottleneck:我们尝试多种不同的NIC和RPS组合,但通常情况下会存在一个大量的%hi,同时会有个1核心被阻塞,峰值期间CPU利用率只有50%。

总结

以上解决方案体现了Amazon EC2已经可作为高性能数据库的一个选择,在AWS上使用Aerospike你可以花费1.68美元每小时的价格获得百万TPS。

使用AWS Marketplace在VPC中来设置一个基于c3.8xlarge实例Aerospike HVM,并将之作为一个服务器。使用一个AWS Marketplace。 为服务器实例搭载4个额外的ENI,没必要部署更多的Elastic IP。 运行afterburner.sh(cd /opt/aerospike/bin; sudo ./afterburner.sh)来最优每个Aerospike上的线程数量 使用AWS Marketplace来设置5个Aerospike c3.2xlarge实例,将这些使用了相同HVM和VPC的实例作为客户端,同时它们被布置在相同的Placement Group中作为服务器。 保证security group拥有3000-3003 TCP Port用于节点间的通信,同时为了使用AMC,TCP Port 8081需要对互联网开放。 给内存命名空间分配54GB的RAM(c3.8xlarge拥有60GB) 开启Aerospike服务器 通过Java基准客户端来加载数据 cd <java client>/benchmarks<br>./run_benchmarks-z 40 -n test -w I &nbsp;-o S:10 -b 10 -l 23 -k 10000000 -latency 5,1 -h YOUR_AWS_INTERNAL_IP 使用100%的读负载来运行服务器,为每个客户端指配独立ENI上的私有IP。 cd <javaclient>/benchmarks<br>./run_benchmarks -z 40 -n test -w RU,100 &nbsp;-o S:10 -b 10 -l 23 -k 10000000 -latency 5,1 -h YOUR_AWS_INTERNAL_IP 通过5个客户端,你可以获得百万TPS。

但是这仅仅是第一步,在下一篇文章中,我们将继续评估 4个Amazon实例价格性能比。到时候,我们将在内存中使用1个4节点Aerospike集群,同时将加载5个不同的读写负载。

原文链接:http://highscalability.com/blog/2014/8/18/1-aerospike-server-x-1-amazon-ec2-instance-1-million-tps-for.html

如您需要了解AWS最新资讯或是技术文档可访问AWS中文技术社区;如您有更多的疑问请在AWS技术论坛提出,稍后会有专家进行答疑。

订阅“AWS中文技术社区”微信公众号,实时掌握AWS技术及产品消息!

AWS中文技术社区为广大开发者提供了一个Amazon Web Service技术交流平台,推送AWS最新资讯、技术视频、技术文档、精彩技术博文等相关精彩内容,更有AWS社区专家与您直接沟通交流!快加入AWS中文技术社区,更快更好的了解AWS云计算技术。

( 译者/薛童阳 责编/王玉平)

时间: 2024-11-05 12:06:37

如何以1.68美元/小时的成本获取百万TPS的相关文章

诺基亚三款3G廉价手机 即将上市售价约68美元

http://www.aliyun.com/zixun/aggregation/17197.html">北京时间7月4日消息,诺基亚日前又推出了3款全 新的廉价手机,分别是Nokia207,Nokia208和208双卡版. 这3款手机都采用了诺基亚标志性的鲜亮配色,显示屏皆为2.4英寸QVGA分辨率,207和208唯一的区别在于背部的130万像素摄像头. 207/208的机身规格为114.2x50.9x12.8毫米,重量分别是89.6/9 0.5克(额外重量 源于摄像头).此外,两款手机的

JP摩根下调搜狐目标股价至68美元

导读:JP摩根今天发表投资报告称,维持对搜狐(Nasdaq:SOHU)股票的增持评级,但将其目标股价从71美元下调至68美元. 以下是报告全文: 搜狐2010财年第一季度总营收为1.295亿美元,环比下跌4.7%, 同比增长11.9%,超过本行此前预期的1.26亿美元,也超过平均预期1.267亿美元.摊薄每股收益为0.86美元,环比下跌6.4%,同比下跌28.7%,同样超过本行此前预期的0.81美元和平均预期0.82美元. 广告营收预期强劲:搜狐一季度品牌广告营收达到3950万美元,介于公司预期

中国手游集团股价美股盘前跌1.68美元至17.21美元,跌幅达8.92%

摘要: 查看最新行情 中国手游周四盘前大跌9% 6月19日晚间消息,中国手游(Nasdaq: CMGE )今日盘前大跌9%,截至北京时间20:30, 中国手游集团 股价美股盘前跌1.68美元至17.21美元,跌幅达8.92%. 中国   查看最新行情   中国手游周四盘前大跌9% 6月19日晚间消息,中国手游(Nasdaq: CMGE )今日盘前大跌9%,截至北京时间20:30, 中国手游集团 股价美股盘前跌1.68美元至17.21美元,跌幅达8.92%. 中国手游今日发出内部公告称,免去中国手

阿里IPO定价区间上调至66到68美元,筹资将达218亿美元

阿里IPO定价区间上调至66到68美元,筹资将达218亿美元9月16日消息,阿里巴巴集团周一向美国证券交易委员会(SEC)提交更新后的招股书文件称,该集团将把其IPO(首次公开招股)定价区间上调至每股66美元到68美元,原因是来自于投资者的需求表现强劲.按照这一定价区间计算,阿里巴巴集团的筹资额可能将达218亿美元.此前,阿里巴巴将其IPO定价区间初步定为每股60美元到66美元.而彭博社昨日报道称,阿里巴巴集团计划将首次公开募股(IPO)项目的发行价提升至每股70美元以上.意味着参与阿里巴巴集团

CNBC:阿里巴巴IPO发行价区间上调至66到68美元

中介交易 SEO诊断 淘宝客 云主机 技术大厅 9月16日消息,据国外媒体报道,一位知情人士向CNBC确认,阿里巴巴集团拟将IPO发行价区间上调至66到68美元. 在此之前,阿里巴巴集团的IPO发行价区间为60到66美元.然而周一早晨,彭博社有消息称该价格区间会因为投资者认购情况的过度火爆,而上调至70美元水平以上. 不过CNBC此后否认了70美元的可能,并援引知情人士的话称,阿里巴巴会上调IPO发行价水平,但绝不会超过70美元. 根据阿里巴巴新的发行价,该集团IPO最高可达218亿美元规模.加

网易周一收盘股价上涨4.73%,报收于38.68美元

网易周一收盘股价上涨4.73%,报收于38.68美元.此前新闻出版总署人士证实,<巫妖王之怒>已于上周五获审批通过. 7月26日晚间,据版署相关负责人证实,<巫妖王之怒>已于上周五获审批通过,何时开服将由网易自行安排决定. 受此消息影响,网易周一收盘股价上涨4.73%,报收于38.68美元.过去52周,网易股价最高为48.50美元,最低26.16美元. (编辑 张澄)

搜狐股票将目标股价从71美元下调至68美元

摩根大通 天发布研究报告,维持对搜狐(Nasdaq: SOHU )股票的"中性"评级,并将目标股价从71美元下调至68美元. 以下为报告主要内容: 我们预计,搜狐2013年的盈利能力将大幅下降(摩根大通预计为-7%,而2013年为13%).这主要是由于游戏业务从PC游戏开发商向跨平台发行商的战略转型.我们估计,未来12个月内,游戏业务将从盈利部门(2013年运营利润为3.06亿美元)变为成本中心(摩根大通预计2014年运营亏损为1300万美元),而目前也很难预计利润率何时能复苏.非游戏

摩根大通维持“中性”评级下调目标价到68美元

新浪科技讯 北京时间2月18日上午的消息,将进入大举投资的周期到了.我们支持管理层这种大胆的战略转型了.不过我们对其成果以及这次的转型时机选择扔保持谨慎状态. 搜索业务整合将带来短期的协同效应 搜狗和搜搜的整合将带来短期的协同效应.我们预计,未来几个季度搜索业务的商业化能力将得到加强. 品牌广告业务前景提升 我们预计视频和房地产广告将推动2014年上半年品牌广告业务的发展. 维持"中性"评级,下调目标价至68美元 我们的估值中包含游戏业务9美元.门户广告业务14美元.搜索业务8美元.视

摩根大通维持搜狐中性评级 目标价降至68美元

摘要: 查看最新行情 北京时间2月18日上午消息, 摩根大通 天发布研究报告,维持对 搜狐 (Nasdaq: SOHU )股票的中性评级,并将目标股价从71美元下调至68美元. 以下为报告主要内容: 我们预计  查看最新行情 北京时间2月18日上午消息,摩根大通 天发布研究报告,维持对搜狐(Nasdaq: SOHU )股票的"中性"评级,并将目标股价从71美元下调至68美元. 以下为报告主要内容: 我们预计,搜狐2013年的盈利能力将大幅下降(摩根大通预计为-7%,而2013年为13%