Heroku无法将Java应用识别为Worker进程 仍报R10启动超时
Heroku 将 Java 应用识别为 Web 进程的排查与修复步骤
- 校验
Procfile的文件位置与命名- Heroku 仅识别项目根目录下、无任何后缀、大小写严格为
Procfile的文件,禁止将文件放置在子目录、或命名为procfile.txt、Procfile.txt等带后缀/小写的形式 - 文件编码需为无 BOM 的 UTF-8 格式,换行符使用 LF 标准,避免 Windows 平台默认的 CRLF 换行、BOM 头导致解析失败
- Heroku 仅识别项目根目录下、无任何后缀、大小写严格为
- 修正
Procfile的内容逻辑- 每行配置严格遵循
<进程类型>: <启动命令>格式:冒号为英文半角,冒号后至少跟一个空格,确认你配置的worker: java -jar libs/Maid00-1.0-SNAPSHOT-all.jar中 jar 包路径与构建产物的实际路径完全匹配 - 必须显式覆盖 Heroku Java Buildpack 自动生成的默认 Web 进程:在
Procfile中追加一行占位 Web 配置,例如web: echo "worker-only app, no web listener required",从根源上避免 Heroku 因检测不到 Web 配置自动生成需要绑定$PORT的默认启动命令,触发 R10 超时错误
- 每行配置严格遵循
- 触发配置的全量生效
Procfile的配置仅在代码推送的构建阶段被读取,仅手动执行heroku ps:scale不会加载本地的修改,需重新推送代码(如git push heroku main)触发完整构建- 构建完成后执行
heroku run cat Procfile,校验 Heroku 运行环境中实际加载的配置与本地内容完全一致,排除构建过程覆盖配置的问题
- 调整进程规模规避残留问题
- 配置生效后,执行
heroku ps:scale web=0 worker=1 --app maid00,关闭默认生成的 Web 进程,启动 Worker 进程,避免残留的 Web 进程因无法绑定端口触发 90 秒启动超时的 R10 错误
- 配置生效后,执行
内容的提问来源于stack exchange,提问作者Zhang Dingda
相关产品推荐
相关产品推荐

