【问题标题】:Is there a way to automatically restart nodejs app after a 503 error?有没有办法在 503 错误后自动重启 nodejs 应用程序?
【发布时间】:2019-02-18 19:11:14
【问题描述】:

我的 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;

【问题讨论】:

    标签: node.js websocket shared-hosting pusher


    【解决方案1】:

    错误不应该让您的应用崩溃,您应该处理它并记录错误消息。例如,express error handler,请参阅:error handling patterns with express

    此外,如果您的应用崩溃,某些程序可以自动重启它。最基本的是forever

    forever start app.js
    

    它会在您的应用崩溃时重新启动。但在我看来最好的是pm2

    pm2 start app.js
    

    它做的一样,但是有很多额外的功能,比如负载均衡、部署系统、日志管理

    希望对你有帮助,
    最好的问候

    【讨论】:

      【解决方案2】:

      如果您可以在您的服务器上配置 cron 作业,则编写一个脚本来检查您的日志是否失败,如果发现 503 错误则重新启动应用程序并将该脚本附加到一个 cron 作业。

      脚本可以像

      if [ grep -q "503 or something specific" $logfile ]; then {
          service $whatever stop;
          service $whatever start;
      } fi
      

      【讨论】:

        【解决方案3】:

        如果计划尝试 cron 作业/脚本建议,那么您需要在重启后最终清除日志文件,否则会导致重启循环。

        有一个工具叫 logrotate,它是 cron 自己实现的,你可以将自己的配置文件添加到 /etc/logrotate.d

        恕我直言,到目前为止,最好的选择是建议的 pm2。它确实是最好和最简单的流程管理器。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-11
          • 2016-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多