部署在Heroku的应用偶尔显示“There is nothing here yet”刷新恢复问题求助
Heroku偶发"There is nothing here yet"异常排查方案
- 排查dyno休眠时序问题
免费层级的Heroku dyno会在30分钟无访问时进入休眠状态,首次唤醒请求可能在dyno完全启动前被路由返回默认占位页,刷新后dyno启动完成即可正常访问。
验证方式:进入Heroku应用控制台的「日志」页,筛选router关键词,查看异常请求时段是否存在dyno=web.1 state=starting或错误码H99的关联记录。
修复方案:要么升级到付费dyno关闭休眠机制,要么配置定时健康探测任务,每10分钟主动请求一次应用地址,避免dyno进入休眠状态。 - 排查边缘节点缓存异常
Heroku边缘路由节点可能会误缓存应用未部署时的占位页,首次请求命中缓存返回异常内容,刷新后触发回源拉取正常页面。
验证方式:本地执行curl -v 你的应用域名连续发起多次请求,对比异常返回和正常返回的响应头,若异常响应的Age字段大于0且带有heroku-edge标识,即可确认是缓存问题。
修复方案:在应用根路径的响应头中添加Cache-Control: no-store, no-cache, must-revalidate,禁止边缘节点缓存根路径内容。 - 排查滚动发布间隙问题
未开启预启动功能时,Heroku部署新版本会先下线旧dyno再启动新dyno,中间存在几秒的流量真空期,该时段的请求会返回占位页。
验证方式:进入Heroku应用的「活动」页,对比异常请求的时间点是否与部署完成的时间点重合。
修复方案:执行命令heroku features:enable preboot -a 你的应用名开启预启动功能,新dyno完全启动并健康检查通过后才会接入流量,消除部署间隙。
内容的提问来源于stack exchange,提问作者蔡恂藝
相关产品推荐
相关产品推荐

