资源使用优化

更新时间:

资源使用优化是成本优化的必要手段也是有效手段。云资源利用率不佳往往由于用云经验和技术债务等原因,比如传统企业数字化程度不高且经验不足,在面对云原生架构的引入时,缺乏有效的成本洞察和成本控制的手段;也或者由于云原生技术的一些不当使用而带来的技术债务,造成了成本增加。再者,云服务除存量稳态运行的资源之外,每年还会有新增机器,一般情况下,随着业务的增长,资源规模与成本总是逐年增加的。面对如此规模增长,资源管理需要聚焦整体的效率提升,并通过高效的集群管理和资源管理来提升整体资源利用率,节约资源成本。

典型资源优化场景

基础设施云原生化

云原生化之前,传统IT架构迁移上云,或者需要对传统IT架构进行云原生化改造。此阶段是对基础设施的一次重大变更,需要在关键时机对成本进行规划和治理。此阶段需要重点关注以下内容。

  • 推荐借助压测工具,使用ACK成本洞察功能评估业务系统容量。

  • 为基础设施选择型号。更多信息,请参见选型最佳实践

  • 采购基础设施时,使用折扣权益节省成本。更多信息,请参见节省计划

应用云原生化改造

云原生化进行中,云原生化后的应用可以借助Kubernetes提供的弹性扩缩容、混部等机制,具有高可用的稳定性优势。同时,在业务流量动态涨跌波动时,使容器按照承载业务的标准部署单元进行扩缩容,从而具备按业务需求量申请资源成本的智能化策略的削峰填谷能力。

稳定运行的云原生业务

云原生化进行后,业务持续运行过程中需要根据业务的动态变化制定相应的成本治理策略,常见于以下场景:

  • 业务呈现较明显周期性波动,例如出现早九晚五是流量高峰期的现象。此场景推荐使用成本洞察功能观测规律,并采取合适的弹性能力等成本优化手段。更多信息,请参见成本洞察功能说明

  • 新老业务交替频繁是很多新兴业务领域的常见现象。在业务新兴阶段,应用的资源成本面临容量规划的挑战。推荐使用成本洞察功能观测应用的资源成本使用情况,同时推荐使用资源画像功能,合理规划应用的配置规格。具体操作,请参见成本洞察功能说明资源画像

通过资源现状评估可以获知资源使用,通过设计资源使用架构,优化资源利用等措施,可以达到资源利用优化的目标,进一步节约成本。

资源现状评估

在云计算越来越趋于基础设施化的今天,企业使用云服务时通常会遇到资源通常分散在不用的云服务中,这不便于从应用架构的角度来管理资源的挑战。通过工具辅助人工方式定期对云上整体资源进行梳理、调整和更新,将资源可视化,高效指导资源的优化方向,从而避免云资源在持续使用过程中由于各种原因产生不必要的浪费。如存在孤岛资源、闲置或低利用率资源、未绑定公网IP和网关的对外服务资源、未挂载磁盘的资源、数据库是否多可用区部署等等。

云上用户可以免费使用阿里云云速搭CADT工具进行资源现状的可视化洞察。阿里云云速搭提供自助式云资源管理能力,从资源出发,降低架构管理的难度和时间成本。云速搭提供大量预制的应用架构模板,同时提供资源现状探查并自动生成可视化架构图,支持自助拖拽方式定义架构,对云服务可以自动化配置和管理,对云上资源做到从开通到运行到删除的全生命周期管理。

选择适合的云产品及资源规格

企业应该选择适合应用和资源要求的计算实例和存储类型,并面向新算力需求场景使用最新一代实例和技术。

计算实例选型

如何选择适合应用和资源要求的实例类型和大小?在微观层面,对于采用自建或者开源部署模式使用弹性计算ECS的用户,基于业务类型的不同,对实例的选择需要有所侧重匹配。在通用计算场景、缓存场景下则需要选择大内存实例、大数据任务以及在AI深度学习场景下选择异构计算实例。对于客户不同的应用类型,阿里云从场景和业务应用等ECS选型最佳实践出发,针对场景推荐不同的实例规格族,将更细粒度的CPU、内存、IOPS等特性帮助用户使用到极致性价比的计算服务。

关注最新一代实例

选用最新一代实例可以通过较少的数量或者更低的规格,来获得当前环境同样的性能,实现综合成本的进一步优化。阿里云通过底层基础设施地不断加速升级,面向新算力需求场景,实例规格的推陈出新在代际差的选择上需要被关注。相同规格下,阿里云最新一代的弹性计算实例,往往有着更高的主频、网络吞吐能力等性能优势,使用体验也会有所升级,技术的红利在成本上能够反哺到用户,从而让其具备更好的性价比。

存储选型

为了配合使用场景和云服务进行针对存储选型,需要回答好业务和技术指标方面的问题,以便于更清楚存储承载的应用环境。块存储是阿里云为云服务器ECS提供的块设备产品,具有高性能和低时延的特点,支持随机读写,满足大部分通用业务场景下的数据存储需求。您可以像使用物理硬盘一样格式化并建立文件系统来使用块存储。阿里云文件存储NAS是可以提供共享访问,弹性扩展,高可靠,高性能的分布式文件系统。可支持上千台弹性计算ECS、容器服务ACK等计算节点共享访问,您无需修改应用程序,即可无缝迁移业务系统上云。其他业务指标如用户量规模,百万还是千万级;整体存储数据量,数据压缩率,数据量预估和日均增量情况;读写偏好,数据是读多一些还是写多一些;数据是强事务型还是分析型需求;存储所支持的数据服务引擎如关系型、非关系型、键值存储、行或列存储还是图文存储等;运行性能要求,业务并发量、高峰和低谷分别的预估情况等。不同指标对选择存储类型和规格均有一定影响,需要根据不同场景进行适配。

数据库选型

不同业务场景对应的数据库产品以及规格不尽相同,如关系型数据库典型的在线事务处理业务,面向交易系统,行数据会以增删改的方式在数据库中进行数据的更新处理操作,实时性高、稳定性强、确保数据及时更新成功。又如非关系型数据库解决了当业务数据量增长到几百亿时使用关系型数据库带来的性能和成本的问题。云数据库MongoDB采用No-Schema的方式,非常适用于初创型的业务需求。可以将模式固定的结构化数据存储在关系型数据库中,模式灵活的业务存储在MongoDB中,高热数据存储在云数据库Redis版云数据库 Memcache 版中,实现对业务数据高效存取,降低存储数据的投入成本。数据库的选型,需要在一致性、可用性和分区容错性这三个系统指标中平衡,指标三角无法被同时满足。同时在数据库产品维度也需要关注到性能、弹性扩缩、易维护、数据安全、容灾备份等特性,匹配最合适业务特性和技术指标的数据库产品,从而使选型具备优秀性价比。

设计资源架构并合理使用

关闭未使用的资源

对于在非工作时间不需要使用或用于临时性测试资源,可以在非工作时间自动关闭这些虚拟机或在测试任务完成后删除这些服务器。在判断闲置资源时,参考阿里云云监控过去30天的资源性能数据,按照CPU使用率和磁盘IO以及网络利用率为参考指标。当CPU资源峰值利用率< 1%,磁盘IO小于<10,网络利用率低于1%时,判断该服务器为闲置资源。由于内存为占用型资源,故不考虑将其纳入到判断指标内。

优化快照使用成本

快照是数据备份和容灾方案设计中被频繁使用的功能,也是成本最低的数据可靠性保障的通用方案。在使用快照时,有时用户会设置一个通用的运维管理方案,对于所有账号下云服务器按照标准统一管理。快照的计费基础是快照容量,因此快照数量越多,所占用的快照容量也就越大,随之产生的快照费用也会增加。快照使用的最佳实践是基于实际业务需求,按照场景合理设置快照策略,保留合适数量的快照。如核心应用每天一次而非核心应用每周一次,长期快照定期删除以及系统盘不建议保存应用数据等。

优化存储资源使用

在选择存储资源时,需要注意通过不同方式创建云存储时,各存储产品所支持的计费方式会有所不同;时刻评估你的存储资源如何根据业务特性配置合理的生命周期并养成定期清理磁盘的良好习惯,删除不用的内容。在超大数据规模的存储场景下,可以使用存储容量包降低整体使用成本。同时也要优化存储资源的使用架构,比如在使用SLS过程中可以优化存储结构和优化存储内容:

优化存储结构

如果您持续采集某应用的日志,每天的写入量为100 GB,存储30天并建立全文索引,此数据量日志服务成本就很高。如果您更关心的是其中某一类POD的日志,例如操作日志与出错日志。假设这类日志的比例是20%,且希望存储30天。对其他的日志只需要存储7天。那么推荐您使用如下加工方案。则可节省近25%的成本:

  • 构建接入源Logstore,存储3天不建立索引。

  • 构建目标Logstore1,用于存储操作日志与错误日志,存储30天并建立索引。

  • 构建目标logstore2,用于存储一般性日志,存储7天并建立索引。

优化存储内容

假设您只关心原始日志中的某些字段,则可以通过数据加工将关心的字段存储30天并建立索引,其他冗余字段仅存储3天即可。那么推荐您使用如下加工方案:

  • 构建接入源Logstore,存储3天不建立索引。

  • 构建目标Logstore,用于存储操作日志与错误日志,存储30天并建立索引。

假设每条日志经过加工后大小约为原来的60%,与加工之前相比大约可以节省30%的成本。

合理规划网络

当使用网络服务时,在架构优化层面可以尽量使用内网进行应用间的通信;在做跨账号或跨VPC之前的流量互通时规划好跨地域跨国家之间的网络产品。重新评估公网出口的规划设计,推荐使用NAT网关等服务做网络出入流量的统一管理并持续监控网络流量的使用,实时监控网络流量和费用,防止突发的人为或者意外的大规模数据传输而导致成本的飙升。

数据库服务优化分析

用好数据库服务提供的工具。通过对数据库实例多维度的分析,关注实例利用率,根据服务实际运行情况谨慎评估实例状态、动态调整以达到合理的负载使用率。关注CPU峰值利用率、磁盘空间、内存使用率、连接数、QPS、IOPS等多个技术指标水位,在充分保障稳定性的前提下进行技术优化。数据库自治服务 DAS(Database Autonomy Service)是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务,帮助用户消除数据库管理的复杂性及人工操作引发的服务故障,有效保障数据库服务的稳定、安全及高效。并且可以进行自动SQL诊断优化和索引创建,在数据库实例出现慢SQL问题时,及时进行诊断和优化,帮助数据库系统运行在最佳状态。

为应用负载引入弹性机制

为应用的计算资源引入弹性服务,可以减少业务低峰时资源的浪费,也可以减少运维成本。

ECS弹性机制

计算弹性伸缩是云的核心特性之一,根据用户的业务需求和策略,自动调整其弹性计算资源的管理服务。用户根据自己的业务需求自动调整其弹性计算资源,在业务需求增长时,无缝地增加弹性计算ECS实例,并在业务需求下降时,自动减少实例以节约成本。 弹性伸缩 ESS(Auto Scaling)是一个免费的服务,但是通过弹性伸缩自动创建的ECS实例,需要按照ECS按量付费类型的实例标准进行付费。使用ESS的能力,无需投入大量人力来调整计算资源,无需提前预备计算资源,也无需担心不能及时释放冗余资源。弹性伸缩在适当的时间进行伸缩任务,降低资源拥有成本。

容器化改造,提升资源利用率

容器技术通过隔离运行在主机上不同进程,实现进程之间、进程和宿主操作系统相互隔离、互不影响,它有自己的一套文件系统资源和从属进程。容器服务没有管理程序的额外开销,与底层共享操作系统,性能更加优良,系统负载更低,在同等条件下可以运行更多的应用实例,可以更充分地利用系统资源。同时,容器拥有不错的资源隔离与限制能力,可以精确地对应用分配CPU、内存等资源,保证了应用间不会相互影响。更小的计算开销意味着更低的总体成本。容器可以显著减少您启动和管理的虚拟机数量。通过消除每个应用程序都需要运行一个虚拟机的需求,可以减少整体计算开销。这种浪费、重复的操作系统和资源的减少可以转化为巨大的成本节省。过去多年大量的互联网企业经历了应用容器化改造。毋庸置疑,企业应用的容器化改造,不仅可以提升开发运维效率,同时依靠阿里云弹性容器实例相关能力将计算资源的利用率大幅提升,节约大量成本。更多容器弹性策略请参考如下内容。

优化资源利用率

资源利用率提升本质就是用最少的资源最大化满足算力需求,同时需综合考虑业务布局、容灾和稳定性、机器故障率、预留缓冲空间等因素,这些因素交织在一起共同资源使用效率。概括起来需要被关注到的内容包括:明确资源利用率统计口径、优化业务布局和集群架构部署、基于分配率和利用率驱动资源运营、统一资源池和节点管控、完善的资源数据监控能力、统一的资源调度和单实例资源的精细化隔离及水位控制。同时,当成本占比最高的生产环境资源的利用率显著提升,对整体云服务而言,其使用的综合成本收益将会最大化并保障服务质量。

通过云监控明确资源利用率统计口径

使用云监控监控各云服务资源的监控指标,探测云服务可用性,并针对指定监控指标设置报警。可以全面了解阿里云上资源的使用情况和业务运行状况,并及时对故障资源进行替换,高负载资源进行升配处理,保证业务正常运行,对低负载资源进行减配,减少资源浪费。

云原生弹性伸缩满足统一资源节点管控

容器服务弹性伸缩是根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。弹性伸缩是云容器服务被广泛采用的功能。为最大化提升资源使用率,在如在线业务弹性、大规模计算训练、深度学习GPU或共享GPU的训练与推理、定时周期性负载变化等场景均有较大的适用空间。

弹性伸缩服务支持两个维度,第一个是调度层的弹性,主要是负责修改负载的调度容量变化。例如水平伸缩HPA是典型的调度层弹性组件,通过HPA可以调整应用的副本数,调整的副本数会改变当前负载占用的调度容量,从而实现调度层的伸缩。第二是资源层弹性,主要是集群的容量规划不能满足集群调度容量时,会通过弹出容器资源的方式进行调度容量的补充。

两层的弹性组件与能力可以分开使用,也可以结合在一起使用,并且两者之间是通过调度层面的容量状态进行解耦。

云原生资源调度通过应用负载合理调度资源

为了实现精准、实时的实例伸缩和放置,必须把应用负载的特征作为资源调度依据,使用弹性调度策略,云平台负责管理应用所需的弹性计算资源。调度平台可以识别应用特征,在应用负载快速上升时,及时扩容计算资源,保证应用性能稳定。在负载下降时,及时回收计算资源,加快资源在不同租户间的流转,提高资源利用率。使用更实时、更主动、更智能的容器服务ACK精细化调度是获得良好用户体验的关键。通过计算资源的弹性调度,完成指标收集、在线决策、离线分析、决策优化的闭环。

管理存储生命周期

随着应用与业务系统的长期运行,企业将积累大量数据。同时伴随着业务团队承接的业务体量越来越大,所需要的数据源的类型会变的越来越多。

通常情况下,最近写入的数据访问频率会比很久之前写入的数据高很多,此时我们可以认为这些数据为“热”的。随着时间的推移,初始写入的,被认为是“热”的数据,访问频次逐渐下降,当每周只被访问几次的时候,就会转换为“温”的数据。在此后,3~6个月里面,当数据一次都未被访问,或者访问频率降低到一个月几次或者几个月一次,它就可能被定义为“冷”数据。最终,当数据一年之中极少用到,仅有一两次使用频率的时候,它在生命周期内的温度可能就是“冰冻”的了。

不断增长的冷数据或冰冻数据对现有集群的存储空间压力越来越大,成本也越来越高。冷数据存储空间带来的成本不可控影响不容忽视外,在存储生命周期管理的架构设计上也需要为访问频繁的热数据留出性能优化空间。

通过不同组合,冷数据的长期存储成本需要低于热数据存储成本,并且冷数据要能便于读取分析被访问的文件资源创建时间分布情况,进行全生命周期的管理,通过不同存储介质的不同成本情况进行保存,从而达到降低数据存储成本的目的。在云上,可以通过数据的访问频次进行区分不同存储类型,全面覆盖从热到冷的各种数据存储场景,从而达到数据在生命周期内达到存储成本最优,且能满足日常业务需要。

阿里云的多种云原生存储提供冷热存储技术:

对象存储OSS 提供标准、低频访问、归档、冷归档、深度冷归档多种存储类型,全面覆盖从热到冷的各种数据存储场景。

PolarDB-X提供了冷数据归档的技术,若集群中某些库表的数据几乎没有更新、插入和修改操作,且读取频率非常低,如果您有降本需求,可以使用PolarDB MySQL版提供的冷数据归档功能,将这部分数据转存至低成本的OSS上存储,以降低数据存储成本。 AnalyticsDB MySQL通过对统计信息进行智能分析,为用户提供冷热数据优化、索引优化和分布键优化三种类型的调优建议,帮助用户降低集群使用成本,提高集群使用效率。

云原生场景下的资源治理

云原生技术提供了共享、隔离、弹性等资源管理能力,能够非常简单高效地提升资源使用效率并降低企业资源使用成本。然而现实情况可能是大部分企业在使用云原生容器化弹性计算资源的成本有所增加。

造成这一现象的原因可能有两方面。第一,由于云原生技术的一些不当使用而带来的技术债务,造成了成本增加。第二,传统企业主要还是以线下业务开展为主,数字化程度不高且经验不足,在面对云原生架构的引入时,往往缺乏有效的成本洞察和成本控制的手段,难以分析成本增加的原因。引入先进技术的同时成本管理的复杂度也对应被引入,如何在容器层做好资源的管理,是摆在每个企业面前的现实问题。

通过云原生场景的成本治理实践,将成本优化能力融入容器管理平台,并从物理和逻辑两个维度进行聚合分析,物理维度包括集群的Node、节点池和资源组,逻辑维度包括Pod、应用负载和命名空间,并将物理维度的费用和逻辑维度的费用进行打通,建立完整的资源成本画像,从而更准确合理地进行一系列治理工作。

通过自动化来达到资源的合理使用

线上资源含通过自动弹性自动化工具来管理,达到资源的合理使用,可以减少人工运维成本和误操作成本。

  • 弹性伸缩ESS:持续维护跨付费模式、跨可用区、跨实例规格的实例集群。适合业务负载存在峰谷波动的场景。

  • 弹性供应:一键部署跨付费模式、跨可用区和跨实例规格的实例集群。适合需要快速交付稳定算力,同时使用抢占式实例降低成本的场景。

  • 运维编排:以模板的方式定义一组运维操作,高效执行运维任务。适合事件驱动运维、定时运维、批量运维、跨地域运维等场景。

  • 资源编排:一键部署并维护包含多种云资源和依赖关系的资源栈。适合交付整体系统、克隆环境等场景。