gpt4 book ai didi

node.js - ExpressJS 服务器每晚离线 - 502 Bad Gateway

转载 作者:IT老高 更新时间:2023-10-28 23:26:32 27 4
gpt4 key购买 nike

我有一个安装了 Nginx 的网站作为 ExpressJS 服务器的保留代理(端口 3001 的代理)。这将 Node 和 ReactJS 用于我的前端应用程序。

目前这只是一个测试网站,不为任何用户所知或使用。我已经将它安装在带有 Ubuntu 的 Digital Ocean Droplet 上。

每天早上醒来时,我都会加载我的网站并看到 502 Bad Gateway。问题是,我不知道如何找出这是怎么发生的。我安装了 PM2,它应该会自动重启我的 ExpressJS 服务器,但它没有这样做,当我运行 pm2 list 时,我的应用程序仍然显示 online:

enter image description here

当我运行 pm2 logs 时,我收到以下错误(我以管理员身份运行):

enter image description here

所以我将运行 pm2 restart all 来重新启动应用程序,但是我没有看到任何崩溃信息。然而,在这次截屏时,有几个不寻常的请求。 /robots.txt/sitemap.xml/.well-known/security.txt,但没有任何迹象表明发生了崩溃:

enter image description here

当我查看我的 Nginx error.log 文件时,我只能看到以下内容:

enter image description here

然而,我的 access.log ([09/Oct/2018:06:33:19 +0000]) 中有一些模糊的东西,但我没有明白这意味着什么:

enter image description here

如果我在服务器离线时运行 curl localhost:3001,我将收到一条连接错误消息。这在我运行 pm2 restart all 后工作正常。

我完全坚持这一点,即使是最小的帮助也将不胜感激,即使它只是告诉我我完全在吠叫错误的树并且需要寻找其他地方 - 谢谢。

最佳答案

我认为你应该检查一下 github thread ,看来可以帮到你。

基本上,几个小时后,Nodejs 服务器停止运行,可怜的 nginx 无法转发它的请求,因为监听转发端口的服务已经死了。所以它会触发 502 错误。

这都是由于内存泄漏,导致大量垃圾收集,然后导致服务器崩溃。检查你的内存消耗,你可能会有一些惊喜。并尝试调试您的应用程序代码,当时是一 block (依赖)。

更新答案:

因此,我将在我的问题中添加另一个分支,因为到目前为止它似乎对您没有帮助。您可以尝试摆脱 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 添加到 syslog 以了解您的应用正在做什么

StandardOutput=syslog
StandardError=syslog

希望对你有更多帮助

关于node.js - ExpressJS 服务器每晚离线 - 502 Bad Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52717711/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com