我有一个运行在ubuntu服务器上的Node.js / Express应用程序。 它位于一个Nginx反向代理的后面,它将端口80(或ssl的443)上的stream量传送到应用程序的端口。
我最近有一个问题,没有可识别的原因,stream量试图访问/将最终得到一个504错误和超时。 作为一个testing,我增加了超时,现在得到一个502错误。 我可以在我的应用程序上访问一些其他的路线,例如/login ,没有问题。
当我重新启动我的快速应用程序时,我的应用程序运行正常,没有问题,通常几天,直到再次发生。 查看我的Express应用程序的日志,一个好的请求看起来像这样:
GET / 200 15.786 ms - 1214
而没有正确响应的请求看起来像这样:
SAML2服务提供商在反向代理服务器后面的非标准端口上
如何用Apache重写代理安装中的位置响应头
Nginx反向代理图像和CSS不加载
Nginx 1.2.0 – socket.io – HTTP / 1.1 – 代理websocket连接
Apache反向代理可以排除某些文件types吗?
GET / - - ms - -
此应用程序已经运行正常约13个月没有问题,这个问题已经出现没有提示。 在发生这种情况的时间内,我没有更新过任何更新。
这是我的Nginxconfiguration(修改了一点安全性,例如example.com )
upstream site_upstream { server 127.0.0.1:3000; } server { listen 80; listen 443 ssl; server_name example.com; ssl_certificate /etc/Nginx/ssl/Nginx.crt; ssl_certificate_key /etc/Nginx/ssl/Nginx.key; location / { proxy_pass http://site_upstream; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_redirect http://rpa_upstream https://example.com; } }
我不确定如果这是我的Nginxconfiguration或我的应用程序本身的问题,因为我的configuration都没有改变。
Apache代理cookie只适用于第一个应用程序
对于在Node.JS上运行的SaaS,是否需要作为反向代理的Web服务器(Nginx)或清漆?
AWS + SELinux,使用SSL从Nginx连接上游到docker服务器的权限被拒绝
听起来像Nginx或Node应用程序中的内存泄漏。 如果它在重新启动Node应用程序后重新开始工作,但不重新启动Nginx,那么它看起来是Node应用程序的问题。
也可以尝试直接访问您的应用程序,而不需要代理来查看在这种情况下您有什么问题。 有时你可以通过浏览器的开发工具或命令行工具(如curl或基准测试例如Apache ab获得更详细的信息。 使用ab运行繁重的基准可以帮助您更迅速地发现问题,而不是等待。
如果之前工作正常,并且在此期间没有升级任何东西(您的应用程序,任何节点模块或节点本身),那么您的流量可能会稍微增加,现在您开始发现之前没有显示的问题。 或者,也许你的系统现在使用更多的内存用于其他任务和内存泄漏开始比以前更快的问题。
您可以定期开始记录由process.memoryUsage()返回的数据,看看是否有任何问题。
还可以使用ps , top , htop或其他命令监视您的节点进程,或者查看内存使用情况/proc/PID/status等。
您还可以定期监视/proc/meminfo ,查看系统中使用的总内存是否与您的应用程序无响应相关。
另一件可能导致问题的事情是,例如,如果你没有在你的应用程序中处理错误和超时,那么对你的数据库的响应速度慢或者根本不响应。 添加更广泛的日志记录(一行输入每个路由处理程序,每个I / O操作开始之前和每个I / O操作成功或失败或超时之后)应该给你更多的洞察力。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。