如何防止Azure云服务(经典版)进入休眠状态(2018年)?
如何防止Azure网站(App Service)休眠?
我刚好也遇到过这个问题!新版Azure控制台里的Always On确实换位置了,我来一步步告诉你怎么找,还有如果你的站点层级不支持这个功能的替代方案:
一、找到新版控制台的Always On设置
只有Basic、Standard、Premium及以上层级的App Service才支持Always On(免费/共享层没有这个选项),找到它的步骤是:
- 进入你的Azure App Service资源页面
- 在左侧导航栏点击配置(Configuration)
- 切换到常规设置(General settings)标签页
- 往下滚动到实例可用性区域,就能看到Always On的开关,把它设为开启即可
这个设置开启后,Azure会持续向你的站点发送请求,防止应用进入休眠状态,完美解决零散请求触发的错误问题。
二、免费/共享层的替代方案
如果你的站点是免费或共享层,没法用Always On,可以试试下面这些方法:
1. 用Azure Functions定时触发请求
创建一个定时器触发的Function,定期向你的站点发送请求,强制保持活跃:
- 新建Azure Function,选择定时器触发器,设置触发频率(比如每5分钟一次,表达式是
0 */5 * * * *) - 在Function代码里发送HTTP请求到你的站点,示例C#代码如下:
using System; using System.Net.Http; using Microsoft.Azure.WebJobs; using Microsoft.Extensions.Logging; namespace KeepSiteAwake { public static class KeepAliveFunction { private static readonly HttpClient _httpClient = new HttpClient(); [FunctionName("KeepSiteAlive")] public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log) { log.LogInformation($"触发保活请求:{DateTime.Now}"); var response = _httpClient.GetAsync("https://你的站点域名.com").Result; if (response.IsSuccessStatusCode) { log.LogInformation("站点保持活跃成功!"); } else { log.LogError($"请求失败,状态码:{response.StatusCode}"); } } } }
2. 用Application Insights可用性测试
利用Application Insights的定期ping测试来唤醒站点:
- 进入你的App Service对应的Application Insights资源
- 左侧导航栏点击可用性,然后创建URL ping测试
- 设置测试频率(比如每5分钟),填入你的站点URL,保存后Azure就会定期发送请求,防止休眠
3. 配置健康检查端点
如果你的站点有自定义的健康检查接口,可以配合这个设置增强效果:
- 在App Service的配置->常规设置里找到健康检查,设置你的健康检查路径(比如
/health) - 确保你的站点实现这个端点并返回200 OK状态码,Azure会定期调用它,帮助保持实例运行
内容的提问来源于stack exchange,提问作者Colin
相关产品推荐
相关产品推荐

