LeanCloud云引擎因流控无法唤醒解决方案

前段时间,博客的Valine评论后基本收不到邮件通知,这是因为LeanCloud的云引擎休眠后没有被定时任务正常唤醒。去LeanCloud一看,发现了”因流控原因,通过定时任务唤醒体验版实例失败,建议升级至标准版云引擎实例避免休眠”。

官方说法:我们近期发现有大量云引擎的体验版(免费版)用户创建了在同一时刻触发的定时任务唤醒容器运行,会对服务的负载产生一定影响。因此我们决定根据服务器的负载,对这些定时任务添加流控,通过定时任务唤醒容器将有可能会失败。这个改动不会对云引擎的标准版(付费版)用户产生影响。

下面是解决方案。

云引擎体验实例休眠策略

体验实例会执行休眠策略:

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

那么我们只要每三十分钟之内在外部访问一次即可解决。

解决方案

这里使用的是 GitHub+Actions。

  1. 打开GitHub,鼠标点击自己头像,然后选择setting
  2. 点击Developer settings
  3. 选择Personal access tokens,添加一个新的TOKEN。这个TOKEN主要使用来启动actions和上传结果用的。设置名字为 GITHUB_TOKEN , 然后勾选 repo , admin:repo_hook , workflow 等选项,最后点击Generate token即可。名字请务必使用GITHUB_TOKEN
  4. 接下来FORK项目。地址:https://github.com/blogimg/WakeLeanCloud
  5. 成功FORK后,进入项目的设置。选择Secrets,添加你的评论后台地址,一定是 Leancloud 的后台地址(环境变量 ADMIN_URL),而不是你的博客地址。其中 Name的名字必须为SITEValue可以是多个后台地址(注意请求头也要写),用英文逗号分隔。
  6. 接下来对自己的项目点个star就能启动了,启动后请切换到actions,看看是否运行成功。

参考


----------- 本文结束啦感谢您阅读 -----------

赞赏一杯咖啡

欢迎关注我的其它发布渠道