Назад | Перейти на главную страницу

может ли Iowait вызвать значительное увеличение потребления оперативной памяти

У меня есть процесс node.js, непрерывно работающий на экземпляре linux EC2, он извлекает данные и сохраняет их в mysql. Некоторые операции чтения также выполняются в базе данных.

Процесс может работать в течение нескольких часов или дней и потреблять постоянную память. Но время от времени он начинает потреблять все больше и больше оперативной памяти, увеличивая ее до 100%, в результате чего сервер перестает отвечать.

Сначала я подумал об утечке памяти, но ничего не нашел.

Затем я взглянул на ввод-вывод (используя параметр «Подробное время ЦП» htop) и увидел, что существует много Iowait (полоса ЦП остается серой) одновременно с использованием ОЗУ узла. js увеличивается.

Правильно ли интерпретировать, что существует корреляция между проблемой 100% потребления ОЗУ и проблемой производительности ввода-вывода? Или мне следует вернуться к расследованию утечки памяти?

обновление: я запустил тот же код, обрабатывая тот же объем данных на сервере от другого облачного провайдера. У меня пока нет пика использования памяти. Я собираюсь переключиться на этого провайдера и забыть об этом. Все еще любопытно узнать, в чем может быть причина проблемы. оборудование? какая-то конфигурация?

Правильно ли интерпретировать, что существует корреляция между проблемой 100% потребления ОЗУ и проблемой производительности ввода-вывода?

У вас все наоборот - наиболее вероятный сценарий заключается в том, что конкуренция за память вызывает высокий уровень ввода-вывода. Когда объем свободной оперативной памяти сокращается, страницы начинают выгружаться на диск, что снижает производительность ввода-вывода.

Или мне следует вернуться к расследованию утечки памяти?

Ага. Еще один шаг вы мог Можно было бы перенести своп на отдельный шпиндель, чтобы он не конкурировал за ввод-вывод с остальной частью сервера. Однако это должно быть только временным пластырем.