AWS EC2 实例在运行 NodeJs 应用程序时内存不足,由于日志抑制而无法确定根本原因

AWS EC2 实例在运行 NodeJs 应用程序时内存不足,由于日志抑制而无法确定根本原因

正如标题所述,我们在 AWS 上的 EC2 实例上运行了一个 NodeJS 应用程序,该应用程序偶尔会耗尽内存并终止进程。

从业务角度来看,这并不是什么障碍,因为冗余系统可以确保另一个实例启动并通过负载平衡器提供。但我们仍然想找出导致实例内存耗尽的原因,以便我们能够完全阻止这种情况的发生。

我们查看了与终止进程有关的日志,试图找出发生了什么,但由于没有可用内存,操作系统似乎无法在那段时间内写入任何日志。终止进程后,它会记录它已抑制了一些日志,然后继续正常运作。因此,我们假设日志抑制阻止我们获取有关问题实际原因的更多信息。

我们已经尝试关闭日志抑制,但在进程无响应期间它仍然不会记录任何内容,只是现在它不会报告它抑制的日志数量。

我们知道怎样才能找出导致进程内存耗尽的原因吗?

答案1

并终止该进程。

第一的你需要做的就是停止内存耗尽。减少主机上的过量使用。

在 /etc/sysctl.d 中添加一个新文件,其中包含(最初):

vm.overcommit_memory = 2
vm.overcommit_ratio = 15

然后运行sudo sysctl -p (您可能希望稍后调整比例)。

然后,您就可以开始寻找消耗大量内存的东西。

相关内容