Heroku部署Spring Boot应用报错H14 503无Web进程无法访问
Heroku H14 "No web processes running" 错误排查方案
这个错误和你贴出的Controller业务代码无关,核心原因是Heroku平台当前没有运行可接收HTTP请求的web类型进程,按以下步骤逐一排查即可:
- 检查项目根目录的
Procfile配置
Heroku通过项目根目录下无后缀、全小写命名的Procfile识别进程类型,Spring Boot应用必须在该文件中明确定义名为web的进程启动命令,参考写法:
注意三个易错点:web: java -jar target/[你项目构建生成的可执行jar包全名].jar- 文件不能放在子目录,必须在项目根目录,文件名不能写成procfile、Procfile.txt这类错误格式
- 进程名必须是
web,自定义命名为worker、app等的进程不会接收Heroku路由转发的HTTP请求 - jar包路径、文件名必须和实际构建产出完全匹配:Maven构建的jar默认在
target目录,Gradle构建的jar默认在build/libs目录
- 手动调整web dyno实例数
不少场景下即使Procfile配置正确,首次部署后web dyno默认实例数为0,直接执行Heroku CLI命令启动实例即可:
执行后运行heroku ps:scale web=1heroku ps查看进程状态,正常会返回web.1状态为up的结果,如果还是显示0实例说明配置未生效。 - 校验端口绑定规则
Heroku不会使用Spring Boot默认的8080端口,会动态分配端口存在系统环境变量PORT中,需要保证应用启动时监听该变量指定的端口,在Spring Boot配置文件中添加如下配置即可:
如果端口绑定错误,web进程启动后会立刻崩溃,最终也会表现为无可用web进程。server.port=${PORT:8080} - 核对构建日志确认jar包正常生成
如果构建阶段报错没有产出可执行jar包,即使Procfile配置正确也无法启动进程,执行heroku logs --tail查看实时部署、启动日志,排查是否存在依赖下载失败、打包失败、启动时抛出异常等问题。
你贴出的TestController代码逻辑正常,不需要针对接口层做修改,问题全部出在Heroku平台的进程、部署配置层面。
内容的提问来源于stack exchange,提问作者xaos
相关产品推荐
相关产品推荐

