如何防止Google App Engine上的Strapi实例进入休眠状态?
解决Google App Engine上Strapi实例休眠的配置方案
以下是无需ping操作,仅通过GAE配置即可让Strapi实例持续运行的方法:
1. 采用手动扩缩容模式(Standard环境)
手动扩缩容会固定运行指定数量的实例,完全避免闲置休眠问题。在app.yaml中添加如下配置:
instance_class: F2 # 根据业务需求选择合适的实例类,如F1/F2/F3 manual_scaling: instances: 1 # 固定运行1个实例,可根据流量调整数量
配置后,GAE会始终维持设定数量的实例运行,不会因无请求而关闭。
2. 配置基础扩缩容的超长闲置超时(Standard环境)
如果需要保留一定的弹性扩缩容能力,可使用基础扩缩容并设置超长的闲置超时时间,避免实例被自动回收:
instance_class: F2 basic_scaling: max_instances: 2 # 最大实例数,按需调整 idle_timeout: 24h # 设置为24小时或更长,大幅降低闲置休眠概率
该模式下,实例在闲置超过设定时间后才会关闭,基本可满足持续运行的需求。
3. 固定Flex环境的最小实例数(Flexible环境)
若使用App Engine Flexible环境,直接配置自动扩缩容的最小实例数为1,确保始终有一个实例在线:
runtime: nodejs # Strapi基于Node.js,对应runtime版本按需调整 env: flex automatic_scaling: min_num_instances: 1 max_num_instances: 2 # 按需调整最大实例数
Flex环境下,设置min_num_instances: 1后,GAE会持续维持至少一个实例运行,不会因闲置缩容至0。
4. 启用预热请求(辅助优化)
虽然无法直接阻止休眠,但启用预热请求可大幅缩短实例唤醒后的响应时间,提升用户体验。在app.yaml中添加:
inbound_services: - warmup
GAE会在实例启动前自动发送预热请求,提前完成Strapi、nginx等组件的初始化流程,避免首次请求等待过长。
注意事项
- 上述配置会增加资源消耗与计费成本,需根据业务场景(生产/开发)权衡选择;
- 确保
app.yaml配置与你的GAE环境(Standard/Flex)匹配,避免配置无效。
内容的提问来源于stack exchange,提问作者Shahinoor Rahman
相关产品推荐
相关产品推荐

