休眠策略概述

标准实例不会休眠,体验实例会执行休眠策略:

  • 如果应用最近一段时间(半小时)没有任何外部请求,则休眠。
  • 休眠后如果有新的外部请求实例则马上启动。访问者的体验是第一个请求响应时间是 5 ~ 30 秒(视实例启动时间而定),后续访问响应速度恢复正常。
  • 强制休眠:如果最近 24 小时内累计运行超过 18 小时,则强制休眠。此时新的请求会收到 503 的错误响应码,该错误可在 云服务控制台 > 云引擎 > 云引擎分组 > 统计 中查看。

官方文档:云引擎采用什么样的休眠策略?

定时任务设置

创建定时任务
Valine Admin 存在2种云函数,我们会针对性创建2个定时任务,国内版使用北京时间(东八区),国际版使用 UTC+0 时区。

  • self-wake 云函数:自动唤醒服务器

    Cron表达式为 0 */10 0-15 * * ?,表示每天早8点到晚23点59分每隔10分钟访问云引擎,防止休眠。(间隔时间可以调整,不过不建议超过30分钟,以免出现休眠空档期)

  • resend-mails 云函数:邮件补发

    Cron表达式为 0 0 1 * * ?,表示每天9点检查过去24小时内漏发的通知邮件并补发。

LeanCloud 流控问题

当天运行超过18小时,导致 LeanCloud 休眠后,第二天无法通过内部定时任务正常唤醒。(即’因流控原因,通过定时任务唤醒体验版实例失败’),此时只能通过外部访问二级域名来激活容器。

腾讯云函数解决 LeanCloud 流控问题

通过创建 腾讯云云函数,来定时访问二级域名激活容器。
新建云函数1
新建云函数2

1
2
3
4
5
6
7
# -*- coding: utf8 -*-
import urllib.request
def main_handler(event, context):
url="your URL"
req=urllib.request.Request(url)
urllib.request.urlopen(req)
print("外部访问运行完成!")

新建云函数3
新建云函数4

可查看日志,是否正常运行
云函数日志

运行函数可能存在失败,所以可以通过缩短间隔或者加长定时区间来解决。只要成功一次,后续即可通过 LeanCloud 的定时任务自动唤醒。

参考文章

云引擎采用什么样的休眠策略?
Valine Admin 配置手册 - 定时任务设置
腾讯云函数解决 LeanCloud 流控问题
解决 LeanCloud ‘因流控原因,通过定时任务唤醒体验版实例失败’ 的问题