Мое приложение 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
Ошибка не должна вызывать сбой вашего приложения, вы должны обработать ее и просто записать сообщение об ошибке. Например, для экспресс-обработчик ошибок см.: шаблоны обработки ошибок с экспрессом.
Кроме того, в случае сбоя приложения некоторые программы могут перезапустить его автоматически. Самый простой из них — навсегда :
forever start app.js
Он перезапускает ваше приложение при сбое. Но лучшим, на мой взгляд, является pm2 :
pm2 start app.js
Он делает то же самое, но имеет множество дополнительных функций, таких как балансировка нагрузки, система развертывания, управление журналами.
Надеюсь поможет,
С наилучшими пожеланиями
Если вы планируете попробовать задание/скрипт cron, вам нужно будет окончательно очистить файл журнала после перезапуска, иначе это приведет к циклу перезапуска.
Существует инструмент под названием logrotate, который реализован cron, вы можете добавить свои собственные файлы конфигурации в /etc/logrotate.d
ИМХО, лучший вариант на сегодняшний день - это pm2, как было предложено. Это действительно лучший и самый простой из менеджеров процессов.