滚动新闻 →
PHP 更新数据时加入 version 字段,可以解决哪些并发问题 57个粉丝的博主发AI视频调侃问界 被索赔百万 笔记本电脑插电才能开机,拔掉充电器马上关机,电池可能出了什么问题 Windows 11 文件分组功能怎么用?让大量文件更加容易浏览 PHP PDO 预处理语句怎么写?从查询参数到安全执行完整演示 辛弃疾为什么能够把豪情写进词里 骗子被耍惨 澳洲初创公司用AI扮受害者收集情报 浙江男没工作杀人泄愤 进写字楼随机砍死女职员 枸杞在中国传统饮食文化中的历史 中国书法为什么强调“气韵” 韩国军事基地曝漏洞 近200辆比亚迪可进出 个人是养老第一责任人? 山东民政厅厅长言论惹议 传成都人从俄罗斯回国后死亡 官方称鼠疫信息保密 如何培养孩子对校园同学的尊重 视频压缩为什么会影响画面细节 川普乔治亚州助选 博顿斯拼首位黑人女州长 胡塞武装持续攻击沙特 油价飙破110美元 美拟升级中国旅行警告 提高“非法拘押”风险等级 中国人存钱不消费 IMF:因沉重医疗成本 伊朗镇压黑幕曝光 革命卫队陷缺钱危机 欧洲三国爆发抗议 比利时警民激烈冲突 双台风夹击太平洋 墨西哥和关岛紧急戒备 武则天为何能够登上皇帝之位 旧房改造是不是一定要大拆大建 官媒转向?《经济日报》下场批判“懂车帝” 川普救油价暂缓对俄制裁 泽连斯基:无法接受 加州多地爆发野火 数栋豪宅遭焚毁 豆瓣酱背后有什么样的地域饮食文化 喜欢自然风景的人怎样安排旅行 汽车启动机故障有哪些常见表现 固态电池为什么被认为是下一代电池技术 被警察盗走?浙江男出狱后发现账户近50万元消失 白俄罗斯恐参战!俄拟部署弹道导弹袭击乌西 沙特阿联酋联手反击胡塞 伊朗幕后援助被曝光 打破中共稀土垄断!六大国际银行重磅结盟 美国买房时如何计算每月真正的住房支出 北美家庭应该如何制定长期储蓄目标 湖南娄底公园暗夜砍人 两男子倒地不起 五中全会禅让李强?习近平恐成最后党魁! 美国和加拿大购买游艇有什么区别

Google Cloud Autoscaling 怎么工作,什么时候应该让虚拟机自动增加实例

发布时间: 2026-09-26 19:30:02    最后更新: 2026-10-16 14:41:41    阅读:67  约10 分钟阅读     

Google Cloud Autoscaling 怎么工作,什么时候应该让虚拟机自动增加实例
图片说明:示意图   图片来源:Public Domain(公有领域)
一台服务器什么时候应该增加第二台、第三台甚至几十台服务器?在传统机房里,这通常意味着管理员提前购买硬件、安装系统、配置应用,然后等待流量到来。云计算改变了这个逻辑。Google Cloud 的 Autoscaling 可以根据工作负载变化,自动调整虚拟机实例数量,让计算资源随着业务需求增加或者减少。

但自动扩容并不是简单的“CPU超过75%,马上开一台新机器”。如果把Autoscaling理解成一个只看CPU温度的自动开关,很容易在实际部署中产生错误配置。

Google Cloud Compute Engine中的自动扩展主要建立在Managed Instance Group,也就是MIG之上。MIG可以把一组配置一致的虚拟机作为一个整体管理,而Autoscaler则根据预先设定的扩展策略决定这个实例组应该维持多大规模。负载增加时扩容,需求下降时缩容。

最容易理解的方式,是把Autoscaler想象成一个不断回答问题的控制系统:按照现在的负载,这个实例组还够不够用?

最常见的信号是CPU利用率。

假设一个MIG设置目标CPU利用率为60%。随着用户请求增加,实例组平均CPU利用率不断高于目标值,Autoscaler可能增加实例,让更多VM分担工作。反过来,当负载长期下降,实例数量又可能减少。

这里有一个重要区别:这个60%或者75%不是“超过以后立即执行”的硬性报警线。它更接近Autoscaler希望维持的目标利用率。系统会根据当前实例组的负载和配置,计算需要多少实例,而不是机械地看到一台机器超过75%就增加一台。

而且,Google Cloud并不要求Autoscaling只看CPU。

目前的MIG Autoscaling可以使用平均CPU利用率、负载均衡服务能力、Cloud Monitoring指标以及计划任务等信号。在某些工作负载中,还可以根据队列等业务指标进行扩展。

这非常重要,因为CPU高并不一定意味着用户体验变差,CPU低也不一定意味着服务很健康。

比如一个Web API服务器的CPU只有40%,但是数据库查询延迟已经从50毫秒增加到800毫秒。此时继续增加Web服务器可能没有多大帮助,因为真正的瓶颈在数据库。

反过来,一台服务器CPU可能长期只有50%,但它承担的是大量网络连接或者请求分发任务,真正限制性能的可能是负载均衡服务能力、网络吞吐或者其他指标。

因此,选择Autoscaling信号时,应该尽可能选择能够反映“业务容量”的指标,而不是随手选择一个看起来容易理解的硬件指标。

Google Cloud还允许同时设置多个Autoscaling信号。当多个信号同时存在时,Autoscaler会分别计算每个信号所需要的实例数量,然后采用其中最大的建议规模。这样做的逻辑很简单:如果CPU认为需要10台机器,而负载均衡服务能力认为需要14台,那么系统不能只增加到10台,因为14台才是当前策略中更高的容量需求。

这也是自动扩容真正有价值的地方:它不是简单地根据一个数字开关服务器,而是在多个资源信号之间寻找满足当前需求的容量。

当然,Autoscaling也可以提前扩容。

对于每天上午固定出现流量高峰的网站,如果每天早上9点才开始看到CPU上升,然后才创建VM,新的实例可能来不及在流量高峰之前完成初始化。Google Cloud提供了schedule-based autoscaling,可以提前规定某个时间段至少需要多少台VM。

例如一个在线教育平台每天晚上7点都会出现大量用户同时进入课程。如果一台VM从创建到应用真正能够处理请求需要几分钟,那么7点才开始扩容显然太晚。计划扩容可以提前准备容量。

对于具有明显周期性负载的MIG,还可以使用predictive autoscaling。它利用历史负载预测未来需求,并提前扩容,使新VM能够在负载到来之前准备好。Google特别指出,这种方式更适合具有稳定日周期或周周期,而且实例初始化时间比较长的工作负载。

不过,预测并不是Autoscaling的唯一依据。

如果突然发生一条新闻导致网站访问量暴涨,而这种流量历史上从未出现过,预测模型当然不可能提前准确知道。Google的文档说明,预测Autoscaling仍会受到实时负载信号影响;如果实时负载高于预测值,实时信号会优先发挥作用。

这意味着预测扩容和实时扩容并不是二选一。一个负责提前准备,一个负责应对突然发生的变化。

自动扩容还有一个非常容易被忽略的问题:新实例不是凭空出现以后就马上成为一台“成熟服务器”。

VM需要启动操作系统,运行初始化脚本,启动应用程序,建立连接,并加载必要的数据。Google Cloud允许配置initialization period,用来告诉Autoscaler新实例大约需要多久才能进入稳定工作状态。Autoscaler在扩容判断中会考虑这个初始化阶段,因为刚刚启动的VM产生的资源利用率可能还不能代表正常运行状态。默认初始化时间为60秒,但实际应该根据应用启动过程进行测试和设置。

因此,一个启动需要30秒的Node.js API服务器,与一个需要5分钟加载模型的AI推理服务器,不能使用完全相同的Autoscaling思路。

缩容同样不能理解成“CPU下降就马上删除服务器”。

如果网站刚刚经历一次高峰,流量下降几分钟,Autoscaler如果立即删除大量VM,下一波请求又来了,就可能再次扩容。结果就是实例数量不断增加、减少,系统出现所谓的“抖动”。

Google Cloud为此使用stabilization机制。默认情况下,Autoscaler在缩容时会考虑近期观察到的峰值负载,而不是看到当前负载下降就立即把实例删除。默认的stabilization period为600秒,也就是10分钟。

对于某些业务,还可以使用scale-in controls进一步限制缩容速度。例如一个网站预计流量下降后很快又会迎来第二波高峰,就没有必要在第一波高峰刚结束时迅速删除大量VM。scale-in controls可以限制实例减少的速度。

这说明Autoscaling真正解决的是“容量弹性”,而不是“所有性能问题”。

如果数据库已经达到连接数上限,Web服务器从10台增加到50台可能只会让数据库死得更快。

如果应用使用共享文件系统,而存储IOPS已经达到上限,增加计算实例同样不会自动解决问题。

如果应用内部存在全局锁、单线程任务或者某个只能运行在单节点上的核心组件,那么增加VM也可能无法提高吞吐量。

如果应用需要大量实例之间互相通信,规模继续扩大以后,网络通信成本甚至可能成为新的瓶颈。

因此,配置Autoscaling之前,最好先回答一个非常现实的问题:这个应用的性能到底能不能随着实例数量增加而近似线性增长?

如果增加一台服务器能够多处理一部分请求,增加到10台以后仍然能够继续提高吞吐量,那么Autoscaling非常适合。

如果所有服务器最终都必须等待同一个数据库、同一个磁盘、同一个锁或者同一个外部API,那么Autoscaling的价值就会迅速下降。

成本也是Autoscaling必须考虑的问题。

自动扩容的优势之一就是低负载时可以减少闲置VM,从而降低成本。但自动扩容并不会自动帮企业控制预算。如果一次突发流量让实例组从5台扩大到50台,计算资源产生的费用同样会快速增加。

因此实际生产环境通常应该设置合理的最小实例数和最大实例数。Google Cloud的Autoscaling策略允许配置实例数量上下限,最大实例数尤其重要,因为它可以防止某些异常负载或者错误配置导致实例无限增加。

对于面向公众的网站,一个比较合理的思考方式是把Autoscaling看成一个弹性水库。

正常情况下,只保留满足基本业务所需要的容量;流量增加时释放更多计算资源;高峰过去以后,再逐步收回多余容量。但水库的大小仍然有限,进水管和出水管也有极限。如果数据库、网络或者存储已经堵住,继续增加水库里的水并不能解决问题。

所以,什么时候应该让虚拟机自动增加实例?

答案不是“CPU超过某个数字的时候”,而是当应用的实际容量需求正在增加,而且增加更多实例能够有效分担工作负载的时候。

对于普通Web应用,可以从CPU、请求量或者负载均衡服务能力入手;对于后台任务,可以考虑队列长度或者自定义Cloud Monitoring指标;对于每天规律出现的流量,可以使用计划扩容;对于有明显历史周期且启动时间较长的应用,可以考虑预测扩容。

而对于一个真正成熟的云架构,Autoscaling从来不是单独工作的魔法按钮。它需要和负载均衡、健康检查、数据库扩展、缓存、消息队列、存储以及应用本身的无状态设计配合起来。

最终,Autoscaling的价值也不是让服务器数量变得越多越好,而是在用户真正需要计算能力的时候及时提供,在需求下降以后及时释放。对企业,这意味着少一点闲置资源;对用户,则意味着在流量高峰到来时,后台还有足够的计算能力接住请求。

云计算最有意思的地方就在这里:真正先进的系统,并不是永远拥有最多的服务器,而是能够知道什么时候需要更多服务器,以及什么时候已经不需要了。

喜欢这篇报道?

使用下面的功能,方便以后继续阅读和分享 MNewsTV

设为 Google 新闻首选来源 让 Google 新闻优先显示 MNewsTV 的最新报道 ›
★ 我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

捐助(Paypal): https://www.paypal.me/observeccp
订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP