Розуміння того, скільки пам’яті споживає ваш додаток 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 оптимізованими та запобігати проблемам з пам’яттю, які можуть вплинути на продуктивність.