← 返回博客列表

Heroku 部署失败:Dyno 休眠、H10 应用错误和构建日志怎么看

2026-09-09 · 刺猬VPN

把一个已经在本地跑通的网站推到 Heroku,国内常见的第一关不是代码,而是 dashboard.heroku.com 登录转圈,或者命令行 heroku login 打不开浏览器。登录成功之后,git push 能传完,打开应用地址却看到 Application error。页面本身几乎不解释原因,原因在日志里。

构建失败、没有网页进程、请求超时、内存超限、机器休眠,是五类不同的日志。只反复推同一个提交,不会让休眠的机器变成不休眠。下面按登录、验证账号、推送、看日志讲。套餐价格和机器规格会变,以官方最新条款为准。

机器档位和现象

低档机器睡觉时,第一个访客会等十几秒甚至看到暂时的错误,刷新后又能开。这和构建失败不是一回事。构建失败时应用根本没有新版本可跑。

对比项Eco 等低档标准档及以上本地电脑
运行一段时间没访问会睡按你开的数量保持你的进程在不在
唤醒第一次打开要等没有这层睡眠不涉及
常见页面唤醒慢,不是代码错应用错误要看日志终端里的报错
日志位置网页活动页或命令行同左你自己的终端
区域美国或欧洲同左无
构建同样要过构建同左本地依赖不一定相同
适合演示、偶尔打开要一直能访问的服务开发调试

从登不上到能访问:分步操作

  • 第一步:先把线路准备好,连上刺猬VPN。安装客户端后自定义用户名和密码即可完成匿名注册,不需要邮箱、也不需要手机号,免费节点永久免费、不限流量、不限速,注册即用;全程 HTTPS+AES 加密传输。网页控制台和命令行登录用同一条线路,授权页不要换出口。
  • 第二步:用无痕窗口打开 dashboard.heroku.com 注册。验证邮件在同一节点下点开。账号若要求补充付款方式才能创建应用,按页面完成,不要找已经失效的免费额度攻略。
  • 第三步:安装官方命令行后执行登录。浏览器跳转若失败,改用命令行给出的令牌方式,把令牌贴回终端。令牌不要写进仓库。
  • 第四步:在项目里确认有 Procfile,网页服务的那一行要声明网页进程。没有这个文件,平台不知道要跑哪条命令,推送仍可能显示成功。
  • 第五步:用 git 推到 heroku 的主分支。看到构建结束并且发布完成,才算有新版本。中途报依赖安装失败,先看构建日志的最后几十行,不要先改 Dyno 数量。
  • 第六步:打开应用地址。若是应用错误,立刻看日志尾部。没有网页进程、请求超时、内存超出,日志里的代码不同,处理也不同。
  • 第七步:环境变量放在应用的设置页,不要写进代码。缺一个密钥时,进程会在启动时退出,日志里通常有你的程序自己打印的缺项。
  • 第八步:要对外一直可访问时,把机器档从会睡眠的那档换成不睡眠的档,并确认数量至少是一。改完看活动页里的状态是不是在运行。

按日志现象排查

先看最新一次发布的日志,再决定改代码还是改档位。

  • 打开就是应用错误,日志里说没有网页进程:Procfile 缺失或进程名不对。补上网页进程那一行再发布。
  • 日志里是请求超时:一次请求超过平台允许的时间。把慢任务挪到后台,或者缩短这次请求要做的事。加大机器不一定够,超时上限仍在。
  • 日志里是内存配额超出:进程占用超过这一档。减并发或升档。反复重启会把访客一直留在错误页。
  • 构建阶段依赖安装失败:锁文件和运行时版本不一致。把本地能装过的锁文件一起提交,并在配置里写明运行时版本。
  • 推送成功但网站还是旧的:推错了分支,或发布没完成。看活动页最新一条是不是你这次的提交说明。
  • 登录页转圈:控制台脚本没加载完。无痕窗口,保持节点,不要同时开着拦截扩展。
  • 命令行登录一直等浏览器:授权地址没在同一条线路打开。复制终端里的地址,在已连接的浏览器里打开。
  • 半夜能开、白天第一次访问失败:多半是低档睡眠。升到不睡眠的档,或接受第一次唤醒的等待。

和别的托管怎么选

只放静态页时,不一定要一台会睡眠的机器。容器和另外几家的对比见 Render、Railway 与 Fly.io。前端构建挂在网页托管上的步骤见 Vercel 与 Netlify 部署。刺猬VPN自身不对账号设速率上限。实际可用性取决于当前网络环境。

对比项Heroku静态站点托管免费节点只开控制台
跑什么带进程的网站和后台构建后的静态文件不负责你的服务器
失败信号应用错误和日志代码构建日志在对方面板页面打不开
睡眠低档会睡一般没有这种机器无关
命令官方命令行和 git对方的命令或网页不需要
线路登录和推送时需要同左永久免费、不限流量、不限速
长期时长套餐期间不限流量、不限速同左只用来试登录

推送之后先读哪一段日志

活动页按时间倒序。你要的是最新一次发布里、进程退出前的那几行,不是几小时前的警告。命令行看日志尾部时,先复现一次错误再看,否则屏幕上是旧记录。

环境变量改完必须重新发布或重启,有的框架只在启动时读配置。只保存设置、不重启,线上仍是旧值,日志里会继续报缺密钥。

同一账号里若有多个应用,命令行要先指定应用名。推到错误的应用上,你会在另一个地址上看不到更新,还以为构建丢了。区域选美国或欧洲以创建应用时为准,创建后不要假设能免费改区域。

附加组件和数据库有自己的连接串。连接串放进环境变量,不要提交。本地用一套、线上用一套,日志里出现拒绝连接时,先对主机名是不是线上那个。

发布之后怎么读日志

发布之后先在活动页确认最新一条就是这次提交,再看日志最末尾进程退出前的几行。几小时前的警告解释不了眼前的错误页。自己打开一次网站再取日志,否则这次的记录根本不会出现。环境变量保存后要重启,已经跑着的进程不会重读配置。

同一账号有多个应用时,命令行必须写上应用名,推到别的应用上会让你在错误地址里找更新。附加的数据库用官方连接串,主机名对不上时日志会写拒绝连接。低档睡眠和构建失败不要混在一次升档里处理,先看日志代码再决定要不要加钱。

运行时版本写在项目配置里,和锁文件一起提交。本地用新版本、线上用旧版本时,构建能过、启动会崩。附加组件的账单和机器的账单是分开的,删掉应用前先摘掉数据库,否则可能继续扣。区域在创建时选定,迁区域等于新建,先备份再动。

演示给别人看之前,用无痕窗口打开应用地址,不要用你已经登录控制台的那个窗口。无痕打不开而你自己能开,说明问题在应用而不是在你的登录态。把这次日志的最后一段存下来,下次同样的报错就能对上是不是旧问题。

依赖里如果有需要编译的模块,构建镜像缺系统库时会在安装阶段失败。这类错误在日志前半段,不要只看最后一句退出。把缺少的库写进构建配置再推,不要在本地反复安装来模拟线上。

常见报错速查表

现象原因解决办法
Application error进程没跑起来看日志尾部的具体代码
没有网页进程缺少或写错 Procfile补上网页进程再发布
请求超时单次请求太慢拆任务,不要只加大机器
内存超出超过这一档配额减占用或更换档位
构建失败依赖或运行时不符提交锁文件并写明版本
第一次打开很慢低档机器在睡接受唤醒或换不睡眠的档
登录转圈控制台未加载完无痕窗口并固定节点

高频问答

  • 问:推送显示成功为什么还是错误页?答:推送成功只说明收到了代码。进程有没有起来看日志,不看推送结束那一行。
  • 问:Eco 睡觉正常吗?答:这一档的设计就是空闲后睡。要一直在线就换档,以价格页为准。
  • 问:要不要把数据库端口暴露出来调试?答:不要。用官方给的连接串,从应用里连。
  • 问:日志里没有我的报错?答:先自己打开一次网站再取日志。没人访问时,有的错误不会出现。
  • 问:区域能改吗?答:以控制台当时的选项为准。改不了就新建应用再迁,不要删库之前不备份。
  • 问:命令行和网页哪个为准?答:两边看的是同一个应用。状态不一致时刷新活动页,以最新发布为准。

每次发布只改一个原因

Heroku 应用错误、构建失败、机器睡觉,先分清日志代码。没有网页进程就补启动文件,超时就减单次工作,内存超出就降占用或换档,睡觉是档位特性不是代码坏了。登录和推送保持同一条线路。

刺猬VPN采用 HTTPS+AES 加密传输,支持自定义用户名和密码匿名注册,不需要邮箱和手机号。免费节点永久免费、不限流量、不限速,适合先打开控制台;时长套餐按周期计费,期间不限流量、不限速,适合反复推送和看日志。价格与档位以官方最新条款为准,实际可用性取决于当前网络环境。发布后先看最新日志再决定要不要再推一次。构建日志的前半段如果写缺少系统库,不要只看最后一行退出。需要编译的依赖,把库写进构建配置再推,不要在自己电脑上反复安装来假装线上环境已经一致。演示前用无痕窗口打开应用地址。无痕打不开,就不是你的控制台登录态能解释的。删应用前先确认数据库等附加组件已经卸下,免得机器没了账单还在。配置改完若没有重启,线上仍是旧值,日志会继续报缺密钥。把应用名写在命令里,避免推送到另一个还在计费的旧项目。把页面上的原句抄下来,比只记得打不开更有用。一次只改一个条件,改完再试,确认生效的是哪一次。连续更换出口会让你失去对照,官方页面的说明也比旧攻略可靠。订单号、日志末尾或个人页上的名称,这三样至少记下一样再去问客服。问的时候带上时间,对方才对得上你看到的那一屏。

开始使用刺猬VPN:HTTPS+AES 加密、零日志,匿名注册无需邮箱

刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。