Heroku Docker应用重启或修改环境变量后被挂起原因咨询
Heroku Docker应用触发自动挂起的原因分析
以下是匹配你当前配置的高概率触发原因,按优先级排序排查即可:
- 进程类型配置错误
如果你实际要部署的是需要接收HTTP请求的Web服务,错误将进程类型声明为worker的话,Heroku无法检测到绑定指定$PORT的web进程,会判定部署失败触发自动挂起。这种情况需要将heroku.yml中的worker字段修改为web,同时确保你的Python服务启动时绑定Heroku分配的$PORT环境变量对应的端口。 - 未给worker进程分配dyno运行配额
如果你确实需要运行worker类型的后台任务进程,Heroku默认不会为worker进程自动分配运行资源,修改环境变量或重启后,平台检测到已声明worker进程但无有效运行的dyno实例,会判定为异常部署触发挂起。可运行命令heroku ps:scale worker=1分配1个基础dyno实例验证该问题。 - worker进程无保活逻辑触发闲置/崩溃判定
你当前配置的启动命令CMD [ "python3", "-m" , "vision" ]如果运行后单次任务执行完成就直接退出,没有持续运行的保活逻辑,Heroku会判定worker进程异常崩溃,多次重启失败后就会自动挂起应用。需确认vision模块是否有持续监听任务、保持进程常驻的逻辑,缺失的话补充循环保活代码即可。 - 免费账号资源限制触发
如果你使用的是Heroku免费套餐,免费dyno每月有固定运行时长上限,且worker进程不支持休眠机制,只要启动就会消耗时长,时长耗尽后触发重启/修改配置操作时,平台会直接挂起应用。 - 进程启动失败次数超限
如果vision模块启动时存在依赖缺失、运行时错误导致连续崩溃,多次启动失败后Heroku会判定应用存在故障自动挂起。可运行命令heroku logs --tail查看运行日志排查具体启动报错。
你收到的"The application "app" was suspended. If you believe this is an error please contact support"为通用挂起通知,以上为对应你配置的最高概率触发项,按顺序排查即可定位问题。
内容的提问来源于stack exchange,提问作者Poxsis YT
相关产品推荐
相关产品推荐

