Понимание того, сколько памяти потребляет ваше приложение Node.js, важно для оптимизации производительности и предотвращения утечек памяти. Node.js предоставляет встроенные инструменты для программной проверки использования памяти, а также существуют внешние инструменты для мониторинга в реальном времени.
1. Использование process.memoryUsage()
Метод process.memoryUsage() в Node.js предоставляет подробную информацию о потреблении памяти текущим процессом. Вот базовый пример:
console.log('Использование памяти:', process.memoryUsage());
Это выведет объект со следующими полями:
- rss: Resident Set Size – общая память, используемая процессом, включая код, данные и выделенную память.
- heapTotal: Общая память, выделенная для кучи JavaScript.
- heapUsed: Память, в настоящее время используемая объектами JavaScript.
- external: Память, используемая объектами C++, связанными с Node.js.
Пример вывода:
{
"rss": 33157120,
"heapTotal": 7385088,
"heapUsed": 4812560,
"external": 8272
}
2. Форматирование использования памяти для удобочитаемости
Чтобы сделать вывод более удобным для пользователя, вы можете форматировать значения в мегабайтах:
function formatMemoryUsage(memory) {
return {
rss: `${(memory.rss / 1024 / 1024).toFixed(2)} MB`,
heapTotal: `${(memory.heapTotal / 1024 / 1024).toFixed(2)} MB`,
heapUsed: `${(memory.heapUsed / 1024 / 1024).toFixed(2)} MB`,
external: `${(memory.external / 1024 / 1024).toFixed(2)} MB`
};
}
console.log('Использование памяти:', formatMemoryUsage(process.memoryUsage()));
3. Мониторинг памяти в реальном времени
Если вы хотите отслеживать использование памяти в реальном времени, вы можете настроить периодический лог с использованием setInterval:
setInterval(() => {
console.log('Использование памяти:', formatMemoryUsage(process.memoryUsage()));
}, 5000); // Каждые 5 секунд
4. Внешний мониторинг использования памяти
В случаях, когда вы хотите проверить использование памяти из другого терминала или без изменения вашего кода, вот некоторые варианты:
4.1. Использование системных команд
На Linux/Unix:
ps aux | grep node
top -p <PID>
На Windows:
tasklist | findstr node
Затем вы можете отслеживать использование памяти с помощью таких инструментов, как top, htop или Диспетчер задач на Windows.
4.2. Использование библиотеки pidusage
Пакет pidusage — это удобный инструмент для отслеживания использования памяти и процессора для любого процесса Node.js. Установите его с помощью:
npm install pidusage
Вот пример использования:
import pidusage from 'pidusage';
setInterval(async () => {
const stats = await pidusage(process.pid);
console.log(`Память: ${(stats.memory / 1024 / 1024).toFixed(2)} MB`);
}, 5000);
Заключение
Для эффективного мониторинга использования памяти:
- Используйте
process.memoryUsage()для встроенного анализа потребления памяти вашего приложения. - Форматируйте вывод для лучшей читаемости, если это необходимо.
- Для мониторинга в реальном времени используйте периодическое логирование или внешние инструменты, такие как
pidusage,topилиhtop.
Эти методы помогут вам поддерживать оптимизацию приложений Node.js и предотвращать проблемы с памятью, влияющие на производительность.