我不断收到此错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT
I keep getting this Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
我最近安装了 Heroku Redis。在那之前,该应用程序运行良好。我使用 Bull
进行排队,使用 ioredis
作为 redis 库。我最初有连接问题,但我已经解决了这个问题,因为我不再收到错误。但是,描述的这个新错误出现了。
请检查下面的这些详细信息;
Package.json 启动脚本
"scripts": {
"start": "sh ./run.sh"
}
run.sh 文件
node ./app/services/queues/process.js &&
node server.js
从 heroku 控制台的日志中,我看到了这一点。
正在处理UPDATE_USER_BOOKING...按[ctrl C]取消
{"level":"info","message":"mongodb connected"}
1是我在process
脚本中的登录。这告诉我消费者正在 运行ning 并准备好处理它收到的任何数据。
2 告诉我 mongo 已连接。可以在我的server.js
(入口文件)中找到。
我的挑战是在那两行之后,然后显示这个;
错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT
使用 SIGKILL
停止进程
等待进程终止时出错:没有子进程
进程已退出,状态为 22
状态从启动变为崩溃
所以,即使我已经按照他们 docs
中的描述整理了 PORT
,我也不知道为什么会发生这种情况。为了清楚起见,请参阅此内容:
app.listen(process.env.PORT || 4900, ()=>{})
注意: 在我前一天介绍 Redis bit 之前它一直在工作。
我在 package.json file
中 运行 同时 server
和 Queue process
的方式是否有问题?我一直在阅读与此类似的答案,但他们通常专注于 PORT
修复,据我所知,这不是我自己的问题。
TroubleShooting :我从启动脚本中删除了 queue process
,问题就消失了。我改用这个
"scripts": {
"start": "node server.js -p $PORT"
}
所以很明显下面这一行;
node ./app/services/queues/process.js
是问题所在
现在,我如何运行这个队列处理脚本?我需要它来 运行 收听任何 subscription
,然后 运行 processor script
。它在本地与 前 启动脚本一起工作正常。
请注意:我正在使用 Bull 作为队列。我按照本指南进行了实施,并且在本地运行良好。
Bull Redis Implementation Nodejs Guide
我将不胜感激,因为我目前的开发受阻。
所以我决定走另一条路。我阅读了如何使用 Bull 在 heroku 上 运行 后台作业,我得到了一个我实施的指南。这个想法是利用 Node 的并发性 API。对于指南,使用了一个名为 throng
的包装器来实现它。
我删除了 process
文件并将我的消费者脚本包装在 start
函数中并将其传递给 throng
.
Link to heroku guide on enabling concurrency in your app
结果:我开始得到 EADDR in use Error
这是因为 app.listen() 被 运行 两次。 。
解决方案:我不得不将 app.listen
函数包装在一个 worker 中并将其传递给 throng
并且它工作正常。
Link to the solution to the EADDR in use Error
在我的本地机器上,我能够推送到队列并从中使用。部署到 heroku 后,到目前为止我没有收到任何错误。
我已经在 heroku 上测试了更新,它也工作正常。
我最近安装了 Heroku Redis。在那之前,该应用程序运行良好。我使用 Bull
进行排队,使用 ioredis
作为 redis 库。我最初有连接问题,但我已经解决了这个问题,因为我不再收到错误。但是,描述的这个新错误出现了。
请检查下面的这些详细信息;
Package.json 启动脚本
"scripts": {
"start": "sh ./run.sh"
}
run.sh 文件
node ./app/services/queues/process.js &&
node server.js
从 heroku 控制台的日志中,我看到了这一点。
正在处理UPDATE_USER_BOOKING...按[ctrl C]取消
{"level":"info","message":"mongodb connected"}
1是我在process
脚本中的登录。这告诉我消费者正在 运行ning 并准备好处理它收到的任何数据。
2 告诉我 mongo 已连接。可以在我的server.js
(入口文件)中找到。
我的挑战是在那两行之后,然后显示这个;
错误 R10(启动超时)-> Web 进程在启动后 60 秒内无法绑定到 $PORT 使用 SIGKILL
停止进程等待进程终止时出错:没有子进程
进程已退出,状态为 22
状态从启动变为崩溃
所以,即使我已经按照他们 docs
中的描述整理了 PORT
,我也不知道为什么会发生这种情况。为了清楚起见,请参阅此内容:
app.listen(process.env.PORT || 4900, ()=>{})
注意: 在我前一天介绍 Redis bit 之前它一直在工作。
我在 package.json file
中 运行 同时 server
和 Queue process
的方式是否有问题?我一直在阅读与此类似的答案,但他们通常专注于 PORT
修复,据我所知,这不是我自己的问题。
TroubleShooting :我从启动脚本中删除了 queue process
,问题就消失了。我改用这个
"scripts": {
"start": "node server.js -p $PORT"
}
所以很明显下面这一行;
node ./app/services/queues/process.js
是问题所在
现在,我如何运行这个队列处理脚本?我需要它来 运行 收听任何 subscription
,然后 运行 processor script
。它在本地与 前 启动脚本一起工作正常。
请注意:我正在使用 Bull 作为队列。我按照本指南进行了实施,并且在本地运行良好。 Bull Redis Implementation Nodejs Guide
我将不胜感激,因为我目前的开发受阻。
所以我决定走另一条路。我阅读了如何使用 Bull 在 heroku 上 运行 后台作业,我得到了一个我实施的指南。这个想法是利用 Node 的并发性 API。对于指南,使用了一个名为 throng
的包装器来实现它。
我删除了 process
文件并将我的消费者脚本包装在 start
函数中并将其传递给 throng
.
Link to heroku guide on enabling concurrency in your app
结果:我开始得到 EADDR in use Error
这是因为 app.listen() 被 运行 两次。 。
解决方案:我不得不将 app.listen
函数包装在一个 worker 中并将其传递给 throng
并且它工作正常。
Link to the solution to the EADDR in use Error
在我的本地机器上,我能够推送到队列并从中使用。部署到 heroku 后,到目前为止我没有收到任何错误。
我已经在 heroku 上测试了更新,它也工作正常。