You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何缩短Heroku中Dyno的闲置超时时间?

调整Heroku Dyno闲置/无响应终止时间的方案

Heroku官方并未提供直接修改无响应dyno自动终止超时(默认24小时)的配置项,但可以通过以下几种方式实现自定义时长的终止逻辑:

1. 使用Heroku Process Scheduler定时检查并重启

  • 安装Process Scheduler插件:heroku addons:create scheduler:standard
  • 进入Heroku控制台的Scheduler页面,创建定时任务(比如每30分钟执行一次)
  • 编写检查脚本(以bash为例),核心逻辑:
    • 调用应用健康接口判断服务状态
    • 若检测到无响应,触发dyno重启

示例bash脚本(需提前配置Heroku CLI权限):

#!/bin/bash
# 调用应用健康接口,获取HTTP状态码
HEALTH_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://your-app.herokuapp.com/health)
# 若状态码非200,重启指定dyno
if [ "$HEALTH_STATUS" -ne 200 ]; then
  heroku restart web.1 --app your-app-name
fi

2. 应用内集成主动退出逻辑

  • 在应用中添加定时自检任务(比如每15分钟执行一次)
  • 检测核心服务可用性(如数据库连接、业务接口响应)
  • 若确认服务无响应,主动调用exit(1)触发进程退出,Heroku会自动重启该dyno(需确保启用自动重启)

3. 自定义监控脚本+Heroku API调用

  • 编写独立脚本,定期通过Heroku API查询dyno的CPU、内存占用及请求响应指标
  • 设定阈值判断dyno是否处于无响应状态
  • 满足条件时,调用Heroku API的DELETE /apps/{app-name}/dynos/{dyno-id}接口终止目标dyno

注意事项:

  • 操作dyno需持有对应权限的Heroku API密钥(可在账户设置中生成)
  • 完善健康检测逻辑,避免误终止正常运行的dyno

内容的提问来源于stack exchange,提问作者Bad Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:45:55