有没有办法在 503 错误后自动重启 nodejs 应用程序?
Is there a way to automatically restart nodejs app after a 503 error?
我的 nodejs 应用程序在 运行 之后每隔几周就会不断收到 503 资源超出错误,因此我需要通过 ssh 不断重新启动它。我想知道是否有什么东西可以让我在遇到错误或崩溃时自动重启它。
我在错误期间检查了我们的 A2Hosting 服务器的进程数,但它只显示 0/50。
我正在实时使用推送器。
const express = require("express");
const router = express.Router();
const Pusher = require("pusher");
var pusher = new Pusher({
appId: "xxxxxx",
key: "xxxxxxxxxxxxxxxxxx",
secret: "xxxxxxxxxxxxxxx",
cluster: "ap1",
encrypted: true
});
router.post("/", (req, res) => {
const newVote = {
id: req.body.id,
points: 1
};
pusher.trigger("scan", "scan-player", {
id: req.body.id,
player_id: req.body.player_id,
admin_id: req.body.admin_id
});
return res.json({
success: true,
message: "Scan successful!",
id: req.body.id
});
});
module.exports = router;
如果您可以在您的服务器上配置 cron 作业,然后编写一个脚本来检查您的日志是否失败并在发现 503 错误时重新启动应用程序并将该脚本附加到 cron 作业。
脚本可以像
if [ grep -q "503 or something specific" $logfile ]; then {
service $whatever stop;
service $whatever start;
} fi
错误不应该让您的应用程序崩溃,您应该处理它并记录错误消息。例如,express error handler, see : error handling patterns with express
此外,如果您的应用崩溃,某些程序可以自动重启。最基本的是 forever :
forever start app.js
它会在崩溃时重新启动您的应用程序。但我认为最好的是 pm2 :
pm2 start app.js
它做同样的事情,但有很多额外的功能,比如负载平衡、部署系统、日志管理
希望对您有所帮助,
最好的问候
如果计划尝试 cron job/script 建议,那么您需要在重启后最终清除日志文件,否则会导致重启循环。
有一个名为 logrotate 的工具,它是 cron 本身实现的,您可以将自己的配置文件添加到 /etc/logrotate.d
恕我直言,到目前为止最好的选择是建议的 pm2。它确实是最好和最简单的流程管理器。
我的 nodejs 应用程序在 运行 之后每隔几周就会不断收到 503 资源超出错误,因此我需要通过 ssh 不断重新启动它。我想知道是否有什么东西可以让我在遇到错误或崩溃时自动重启它。
我在错误期间检查了我们的 A2Hosting 服务器的进程数,但它只显示 0/50。
我正在实时使用推送器。
const express = require("express");
const router = express.Router();
const Pusher = require("pusher");
var pusher = new Pusher({
appId: "xxxxxx",
key: "xxxxxxxxxxxxxxxxxx",
secret: "xxxxxxxxxxxxxxx",
cluster: "ap1",
encrypted: true
});
router.post("/", (req, res) => {
const newVote = {
id: req.body.id,
points: 1
};
pusher.trigger("scan", "scan-player", {
id: req.body.id,
player_id: req.body.player_id,
admin_id: req.body.admin_id
});
return res.json({
success: true,
message: "Scan successful!",
id: req.body.id
});
});
module.exports = router;
如果您可以在您的服务器上配置 cron 作业,然后编写一个脚本来检查您的日志是否失败并在发现 503 错误时重新启动应用程序并将该脚本附加到 cron 作业。
脚本可以像
if [ grep -q "503 or something specific" $logfile ]; then {
service $whatever stop;
service $whatever start;
} fi
错误不应该让您的应用程序崩溃,您应该处理它并记录错误消息。例如,express error handler, see : error handling patterns with express
此外,如果您的应用崩溃,某些程序可以自动重启。最基本的是 forever :
forever start app.js
它会在崩溃时重新启动您的应用程序。但我认为最好的是 pm2 :
pm2 start app.js
它做同样的事情,但有很多额外的功能,比如负载平衡、部署系统、日志管理
希望对您有所帮助,
最好的问候
如果计划尝试 cron job/script 建议,那么您需要在重启后最终清除日志文件,否则会导致重启循环。
有一个名为 logrotate 的工具,它是 cron 本身实现的,您可以将自己的配置文件添加到 /etc/logrotate.d
恕我直言,到目前为止最好的选择是建议的 pm2。它确实是最好和最简单的流程管理器。