Есть ли способ автоматически перезапустить приложение nodejs после ошибки 503?

Мое приложение 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;
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
2 481
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вы можете настроить задания cron на своем сервере, напишите сценарий, который проверяет ваши журналы на наличие сбоев и перезапускает приложение, если обнаруживает ошибку 503, и прикрепите сценарий к заданию cron.

сценарий может быть таким

if [ grep -q "503 or something specific" $logfile ]; then {
    service $whatever stop;
    service $whatever start;
} fi
Ответ принят как подходящий

Ошибка не должна вызывать сбой вашего приложения, вы должны обработать ее и просто записать сообщение об ошибке. Например, для экспресс-обработчик ошибок см.: шаблоны обработки ошибок с экспрессом.

Кроме того, в случае сбоя приложения некоторые программы могут перезапустить его автоматически. Самый простой из них — навсегда :

forever start app.js

Он перезапускает ваше приложение при сбое. Но лучшим, на мой взгляд, является pm2 :

pm2 start app.js

Он делает то же самое, но имеет множество дополнительных функций, таких как балансировка нагрузки, система развертывания, управление журналами.

Надеюсь поможет,
С наилучшими пожеланиями

Если вы планируете попробовать задание/скрипт cron, вам нужно будет окончательно очистить файл журнала после перезапуска, иначе это приведет к циклу перезапуска.

Существует инструмент под названием logrotate, который реализован cron, вы можете добавить свои собственные файлы конфигурации в /etc/logrotate.d

ИМХО, лучший вариант на сегодняшний день - это pm2, как было предложено. Это действительно лучший и самый простой из менеджеров процессов.

Другие вопросы по теме