Я думаю, вы должны проверить эту ветку github , похоже, она может вам помочь.
По сути, через несколько часов сервер Nodejs перестает работать, а плохой nginx не можетпересылать свои запросы, так как служба, прослушивающая прямой порт, не работает.Таким образом, это вызывает ошибку 502.
Это все из-за утечки памяти, которая приводит к массовой сборке мусора, а затем к сбою сервера.Проверьте потребление памяти, у вас могут быть некоторые сюрпризы.И попробуйте отладить код вашего приложения, часть (зависимость) в то время.
Обновленный ответ:
Итак, я добавлю еще одну ветку к моему вопросу, поскольку, похоже, она вам пока не помогла.Вы можете попытаться избавиться от pm2
и использовать systemd
для управления жизненным циклом своего приложения.
Создать файл службы
sudo vim /lib/systemd/system/appname.service
Это простой файл, который я использовал сам для случайного приложения ExpressJS:
[Unit]
Description=YourApp Site Server
[Service]
ExecStart=/home/user/appname/index.js
Restart=always
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/user/appname
[Install]
WantedBy=multi-user.target
Обратите внимание, чтоон попытается перезапуститься, если произойдет сбой Restart=always
Управление им с помощью systemd
Зарегистрируйте новый сервис с помощью:
sudo systemctl daemon-reload
СейчасЗапустите ваше приложение из systemd с помощью:
sudo systemctl start appname
С этого момента вы сможете управлять жизненным циклом приложения с помощью обычных команд systemd.
Вы можете добавить stdout и stderr в системный журнал дляпонять, что делает ваше приложение
StandardOutput=syslog
StandardError=syslog
Надеюсь, это поможет больше