Iowait 会导致内存消耗显著增加吗

Iowait 会导致内存消耗显著增加吗

我有一个在 Linux EC2 实例上持续运行的 node.js 进程,它提取数据并将其存储在 mysql 中。还对数据库执行了一些读取操作。

该进程可以在数小时或数天内顺利运行,并且内存消耗稳定。但是,它会不时地消耗越来越多的内存,直到内存消耗达到 100%,导致服务器无响应。

我首先想到的是内存泄漏,但没有发现任何东西。

然后我查看了 I/O(使用 htop 的“详细 CPU 时间选项”),发现在 node.js 进程的 RAM 使用量增加的同时,也出现了大量的 Iowait(CPU 栏仍然以灰色填充)。

100% RAM 消耗问题与 I/O 性能问题之间存在关联,这种解释是否正确?还是我应该回到内存泄漏调查?

更新:我启动了相同的代码,在另一家云提供商的服务器上处理相同数量的数据。到目前为止,我的内存使用量没有达到峰值。我正在考虑切换到该提供商,然后忘掉这件事。仍然想知道问题的原因是什么。硬件?一些配置?

答案1

100% RAM 消耗问题和 I/O 性能问题之间存在关联,这种解释正确吗?

你搞错了——最可能的情况是内存争用导致高 IO。当可用 RAM 减少时,页面开始交换到磁盘,这会降低 IO 性能。

或者我应该回到我的内存泄漏调查?

是的。还有一个步骤可以采取的措施是将交换设备移至单独的主轴,这样它就不会与服务器的其余部分争用 IO。不过,这应该只是一个临时的权宜之计。

相关内容