标签: 成本优化

Amazon Compute Optimizer

Flexer基于750名企业高管经验发布了最新的分析报告。报告指出,大多数公司每年在云上花费超过100万美元,平均30%的云支出被浪费掉。

《云成本管理指南》一文有提到:“要降低云成本,必须首先必须能够通过发现云资源的低效使用来识别浪费。云成本管理不是一个一劳永逸的过程,但如果解决了浪费的大部分云支出和预算超支的核心问题,就可以立即节省云基础设施成本“”

针对客户的对减少资源浪费的诉求,亚马逊AWS上线了一款神器,使用机器学习来分析亚马逊云账户计算资源的浪费情况,推荐最佳的AWS资源,在降低成本的同时提高工作负载性能。不但分析准确、依据可靠,更重要的是,
这款神器不但简单易上手,而且免费。

Compute Optimizer

AWS Compute Optimizer 可帮助您使用机器学习来分析历史利用率指标,从而确定最佳的 AWS 资源配置,例如 Amazon EC2 实例类型、Amazon EBS 卷配置和 AWS Lambda 函数内存大小。AWS Compute Optimizer 提供了一组 API 和控制台体验,可通过为您的 AWS 工作负载推荐最佳的 AWS 资源来帮助您降低成本并提高工作负载性能。

工作原理

Compute Optimizer 分析您 Amazon Web Services 计算资源的当前配置及其过去 14 天内来自 Amazon CloudWatch 的利用率指标。
Compute Optimizer 识别最佳和非最佳资源,然后为您的资源提供建议,以降低资源成本、提高性能或两者的组合。
对于特定资源类型,Compute Optimizer 还提供当前资源与推荐的资源或配置之间的利用率指标的比较。此数据可视化显示了在使用推荐的资源或配置的情况下,这些资源或配置在回顾期内的执行情况。

优势

成本降低高达25%

利用 Compute Optimizer 中的建议,将资源成本降低多达 25%。例如,如果 Amazon EC2 实例仅使用了其 10% 的 CPU 容量,则 Compute Optimizer 可能会将其识别为过度预置。它可能建议您将其替换为更经济高效的实例类型,以继续满足工作负载的性能要求。

优化性能

Compute Optimizer 提供的一些建议旨在提高资源的性能。例如,如果 EBS 卷持续达到其最大 IOPS,Compute Optimizer 可能会将 EBS 卷识别为未优化。它可能会推荐一种可提供更高 IOPS 或吞吐量的卷类型,以更好地满足工作负载的性能要求。

建议可行性高

Compute Optimizer 列出了资源的当前价格以及所生成建议的价格。控制台还会显示最近 14 天资源的指标利用率图表。对于选择的资源类型,它还显示推荐资源或配置的预计利用率数据、预测您的工作负载在建议的 AWS 资源选项上的 CPU 利用率、内存利用率和运行时。这可以帮助您在实施建议之前了解工作负载在推荐选项上的表现情况。

入门容易

只需单击几下,您就可以选择让 Compute Optimizer 分析资源并生成建议。选择加入后,Compute Optimizer 将分析支持的资源,并根据新的利用率数据每天刷新建议。

免费

无需额外付费。EC2 实例类型、EC2 Auto Scaling 组配置、Amazon EBS 卷配置和 AWS Lambda 函数建议均免费提供。只需要用户为自己使用的资源付费即可。

实践

登录控制台,开始使用

选择加入,完成

选择加入后,Compute Optimizer 使用机器学习来分析与其所提建议的特定服务有关的相关 CloudWatch 指标和资源配置数据(例如资源标识符和元数据标签)。

例如,为了生成 Lambda 建议,Compute Optimizer 会分析您的 Lambda 配置和相关的 CloudWatch 指标。随着 Compute Optimizer 随着时间的推移增加新功能,我们将扩展所收集的指标和数据的类型。


为了提高 Compute Optimizer 的建议质量,Amazon Web Services 可能会使用您的 CloudWatch 指标和配置数据来改善建议模型和算法。

如需进一步协助或服务,请联系我们,泰岳云业务会提供自动化工具及专业服务。

陈汉卿

云业务事业部

神州泰岳软件股份有限公司·AWS战略合作伙伴

AWS Solution Provider | Migration | DevOps | Cloud Management Tools(CMT) ISV Partner

AWS成本优化之Data Transfer

AWS云服务费用中,数据传输费用很难预估。为了帮助您了解AWS的数据传输成本,这里详细介绍了数据传输费用是如何构建的,如何减少数据传输费用的一些建议,以及如何分析数据传输成本。

尽可能使用价格便宜的区域

某些区域的AWS数据传输成本比其他区域低。美国和加拿大地区通常是最便宜的,而新加坡、印度和南美是最贵的。如果没有必要的商业理由要放在相对贵一些的区域的话,请选择成本效益更高的北美地区。

限制出站流量

减少AWS数据传输成本的最简单方法是减少发送出站数据,从下面的AWS数据传输定价图表可以看出,入站数据是免费的,而出站数据是按照阶梯比例收费的。

使用Cloudfront

CloudFront是专门为减少EC2到互联网传输的费用而设计,比如托管一个向公众提供内容的网站可能产生的费用。CloudFront数据传输按下表收费,在某些区域相比互联网数据传输费用更便宜一些。

保持数据传输在单区域

在AWS服务(如EC2和S3)之间传输数据时,构建应用程序以确保这些传输发生在单个AWS区域内。除此之外,要确保通过私有ip传输数据,而不是公共的或弹性的IPv4/IPv6地址。对于从公有或弹性地址“传入”和“传出”的数据,每个方向均按 0.01 USD/GB 的标准收费。

保持EC2数据传输在一个可用性区域内

在传输数据时,特别是在EC2实例之间以及RDS、Redshift和其他服务实例之间传输数据时,尽量将数据传输保持在相同的可用性区域内通过私有ip传输数据,否则每个方向将收取0.01USD/GB的费用。

使用VPC endpoint

S3 VPC endpoint是一个很好的节约成本的方案,但大多数人都没有使用。在你的VPC中放置一个S3 endpoint可以让任何流量流向S3的内部路径,资费对比如下:

如何发现优化项

降低AWS成本的第一步是了解您的应用在哪些地方收取的使用费最高。为了帮助实现这一过程,AWS提供了一个称为成本分配标签的便利特性,可以与AWS成本管理器一起使用,以分析哪些实例/服务的数据传输费用来自何处。通过将这些标签应用到您的实例上,您可以定位到产生最高AWS数据传输成本的实例,并进一步按类型过滤这些实例的流量费用:CloudFront (out)、Inter AZ、Internet (in)、Internet (out)、区域到区域(in)和区域到区域(out)。

如需进一步协助或服务,请留言,泰岳云业务会提供成本分析工具及专业服务。

AWS成本优化之Aurora

Amazon Aurora 是AWS完全托管的、与MySQL和PostgreSQL 兼容的关系数据库,是 AWS 增长最快的服务之一。鉴于Aurora的设计理念、性能、存储、扩展性、可靠性方面的突出表现,越来越多的客户选择 Aurora 作为核心关系型数据库,处理核心数据业务。本文分析了游戏场景中使用Aurora数据库,调整一个参数值会对数据库系统负载的影响以及成本的影响,提出优化建议。

Aurora成本分析

实例成本

实例价格上,Aurora大约是RDS Mysql的1.2倍。考虑到Aurora相比Mysql的性能优势,在高并发业务场景下,即使Aurora相对Mysql只提升了2倍的性能,成本也会降低很多。例如,Mysql需要4个r4.xlarge节点,Aurora由于性能提升,只需要2个r4.xlarge即可满足业务需求。

总成本上,Aurora更便宜

Aurora 0.58*2=1.16

Mysql 0.48*4=1.92

存储成本

存储价格上,Aurora按实际容量收费,对比RDS在创建实例时就要指定存储容量,价格会更便宜。

IO成本

Mysql Provision IOPS EBS (IO1) 按照预设容量收费,此费用固定。Aurora按照IO总量计算,不同时段的IO请求不一样,费用也不同。实际在高并发业务场景的使用过程中,此项的成本很高。

 

优化参数介绍

参考mysq的官方文档 

https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit

简单的说

0: 由mysql的main_thread每秒将存储引擎log buffer中的redo日志写入到log file,并调用文件系统的sync操作,将日志刷新到磁盘。

1:每次事务提交时,将存储引擎log buffer中的redo日志写入到log file,并调用文件系统的sync操作,将日志刷新到磁盘。

2:每次事务提交时,将存储引擎log buffer中的redo日志写入到log file,并由存储引擎的main_thread 每秒将日志刷新到磁盘。

取值为1是最安全的。如果取值为0,当数据库程序崩溃的时候,可能会丢失1秒左右的数据。如果取值为2,当操作系统崩溃或者硬件故障的时候会丢失1秒左右数据。

innodb_flush_log_at_trx_commit参数在AWS Aurora中属于cluster参数组,可以动态修改。如果把aurora的cluster参数组由默认参数组换成自定义参数组的时候,可能需要手动重启aurora的cluster数据库。

参数优化测试

服务器采用EC2的C5.large,数据库采用Aurora的R5.large兼容mysql 5.6版本,VolumnWriteIOPS采用CloudWatch API进行采集。特别需要注意的是,数据库不做任何操作,也会有VolumnWriteIOPS,数据量大致是 15000-18000次/小时,同时VolumnWriteIOPS并不是和操作完全同步,例如,在9:30进行大批量数据库操作,会观察到在10:00的CloudWatch数据中,仍然有VolumnWriteIOPS的大幅度增长。这些因素会导致测试的数据有一定偏差。

游戏业务操作场景

游戏服务器一般包含两个线程组,分别是Request Thread Group和后台线程Schedule Group,每一个Request的处理和Schedule event的处理都由数据库的Transaction来保护。本次测试主要评估空Transaction(只有begin和commit,没有任何实质sql)的情况,以便了解Transaction机制的时间消耗以及flush参数的相关影响,测试结果表格如下

无论flush的参数是1还是2,VolumnWriteIOPS都可以忽略不记(需要减去基础的操作次数)。从上述测试看,flush参数值对于相关表现基本上没有任何影响。

 
游戏日志记录场景

游戏日志现在的实现是采用单线程异步方式用insert sql把数据插入到数据表,不使用transaction。每一个游戏服进程有4-5个日志线程,负责不同的日志记录,10个左右的游戏服共享一个物理数据库。测试结果如下(注意WriteIOPS数据是估算,细节数字不准确,看大致比例)

从这个数据看,flush参数由1改成2以后,能够大幅度的增加服务器处理的吞吐量,同时减少WriteIOPS的数量。

参数优化实战

完成参数切换,重点观察切换的时候数据库CPU、Load以及切换前后每天的WriteIOPS对比。从结果看,这个参数的修改对两个数据库都有明显影响,其中对日志库的影响更加显著。

数据库负载下降

更新之前的aurora_redo_log_flush数据占比接近20%

更新之后的aurora_redo_log_flush数据库占比为0,对于整体负载能力有10-20%提升。

CPU使用率下降

cpu使用率直接降低了一半。

WriteIOPS明显下降

2020.07.16进行的参数修改,对比2020.07.17的数据和2020.07.10到2020.07.15的数据,对于日志库,WriteIOPS降到了原来的1/5,游戏库差不多降低了一半。

优化建议

考虑行业的特点,以及Aurora本身的故障率,1秒的数据丢失风险如果能够接受,可以考虑优化innodb_flush_log_at_trx_commit参数的值为2,实现数据库IO请求数的减少,还可以考虑实例类型减配的操作,进一步达到成本优化的目标。

本文部分内容引用来自亚马逊AWS官方博客:

https://aws.amazon.com/cn/blogs/china/aurora-mysql-redshift-application-scene-cost-analysis/

如需进一步协助或服务,请留言,泰岳云业务会提供自动化工具及专业服务。

AWS成本优化之Savings Plans

最早AWS在计算资源成本优惠方面,面向客户推出的主要是RI折扣。2019年6月,AWS宣布推出Savings Plans,Savings Plans 比RI更加灵活易用。RI和Savings Plans都是在客户承诺1年或3年期的稳定使用量的前提下提供较低的 AWS 使用价格,简单的说就是包年套餐。

RI和Savings Plans的区别

RI和Savings Plans有什么区别呢?我们把使用AWS EC2资源类比租车,大家试着理解一下。

如果我们只租一天或者几天,我们就用列表单价On-Demand,没有必要购买包年套餐。要长期使用,就要算算,看看是否购买套餐更划算。

 

RI

租车公司推出针对某一个城市的套餐,比如购买北京租车服务套餐,不可以在其他城市使用;我们可以针对大众帕萨特购买一个包年套餐,在这个套餐里以多不退少要补的原则可以开大众系列车Polo 帕萨特 途观;中途是否可以换成奥迪系列是一个可选项;中途是否可以更换内饰一个可选项;”可更换”套餐(最高54%的折扣)比”不可更换”的套餐要贵一些(最高72%的折扣);换这个动作需要办手续,更换手续可以加钱不可以退款;可以选择一次把套餐钱都付掉,或者付一部分,或者按月付,集中付钱要比分期更便宜一些。

 

EC2 Instance Savings Plans

租车公司推出针对某一个城市的套餐,比如购买北京租车服务套餐,不可以在其他城市使用;我们可以针对大众帕萨特购买一个包年套餐,在这个套餐里以多不退少要补的原则可以开大众系列车Polo 帕萨特 途观;自由选择车的内饰,不可以更换奥迪系列。可以选择一次把套餐钱都付掉,或者付一部分,或者按月付,集中付钱要比分期要便宜一些。最高72%的折扣。

 

Compute Savings Plans

租车公司推出面向全国的套餐,无论你使用哪个城市、哪个品牌系列的车都可以享受套餐价格;套餐除了可以用在租汽车上,还可以用于共享单车、高铁;套餐形式不是购买具体车型,而是承诺使用一个小时要花的钱,比如承诺一个小时花21元(开Polo 套餐价 7元每小时 非套餐10元,帕萨特套餐价14元每小时 非套餐价20元,途观 套餐价28元每小时 非套餐价40元),那你可以在承诺期内同时租一个Polo和帕萨特,正好21元。也可以租一个途观,享受套餐价格之外,每小时还需要付40*((28-21)/28)=10元。可以选择一次把套餐钱都付掉,或者付一部分,或者按月付,集中付钱要比分期要便宜一些。最高66%的折扣。

 

总结与购买建议

Savings Plans可以看作是RI2.0版本,完全覆盖RI的功能,且比RI更加方便、灵活。对于非常清楚自己要长期租哪个厂商的车的客户,就使用 EC2 Instance Savings Plans,价格更优惠。对于没有特别确定要租哪个厂商的车,也有使用共享单车、高铁的客户,就使用Compute Savings Plans,使用更便捷。

购买Savings Plans

1、登陆AWS Console,进入EC2模块,选择Savings Plans,点击Purchase Savings Plans如下:

2、进入AWS成本管理模块,选择Savings Plans中的建议,根据需求定制建议,将需求添加到购物车

3、在购物车中预览、提交订单即可

4、通过利用率报告和覆盖率报告查询当前Savings Plans使用情况。

自动化

Savings Plans提供完整的API,对于需要通过代码自动化购买Savings Plans的伙伴可以参考下述网址:

https://docs.aws.amazon.com/savingsplans/latest/APIReference/Welcome.html

如需进一步协助或服务,请留言,泰岳云业务会提供自动化工具及专业服务。

陈汉卿

云业务事业部 | 高级系统架构师

神州泰岳软件股份有限公司·AWS战略合作伙伴

AWS Solution Provider | Migration | DevOps | Cloud Management Tools(CMT) ISV Partner