【发布时间】:2017-02-20 05:03:30
【问题描述】:
我试图弄清楚为什么我的 nodejs 应用程序在 11 小时 20 分钟后变得无响应。它每次都会发生,无论我是在 amazon-linux 还是 Red Hat 上运行它。
我的堆栈:
- nodejs (v. 6.9.4)
- mongodb (3.2)
- pm2 进程管理器
- AWS EC2 实例 T2 中等
每次我运行应用程序时,它都会变得无响应,并向浏览器返回错误:
net::ERR_CONNECTION_RESET
Pm2 没有重启应用,所以我怀疑它与nodejs 无关,我也分析了应用,它没有内存泄漏。 Db 日志看起来也不错。
唯一不变的因素是应用程序在运行 11 小时 20 分钟后崩溃。
我正在处理来自nodejs 应用程序的所有可能错误,但日志文件中没有出现错误,所以我怀疑它一定是其他原因。
我还检查了var/log/messages 和/home/centos/messages,但也没有与那里的应用程序崩溃有关。
/var/log/mongodb/mongo.log 也不显示任何具体内容。
解决问题的最佳方法是什么?
任何线索我该如何调试它或可能是什么原因?
谢谢
【问题讨论】:
-
我猜你泄漏的不是内存,可能是文件描述符。尝试使用 netstat 或 lsof 查看打开的连接或文件是否比您预期的多。
-
如果你直接使用node,即没有pm2,它是否工作?
-
@WillisBlackburn 好像就是这样! UDP 连接未释放,nodejs 达到硬限制。不确定堆栈溢出是如何工作的,但我可以接受您的评论作为答案吗?还没有确定,我还需要多花一天时间测试,不过好像是这样!非常感谢!我花了几百个小时!
-
如果您接受,我会添加一个答案。 :-)
标签: node.js linux mongodb amazon-web-services pm2