Как программно узнать, когда приложению NodeJS не хватает памяти

Как я могу узнать, когда моему приложению не хватает памяти.

Что касается меня, я выполняю транскодирование видео на сервере, и иногда это приводит к ошибкам нехватки памяти.

Итак, я хочу знать, когда приложению не хватает памяти, чтобы я мог немедленно отключить Video Transcoder.

Спасибо.

Это будет трудно сделать точно. Лучше всего измерить, сколько памяти потребляет ваш процесс, выполнив некоторые системные вызовы ОС.

freakish 09.04.2022 20:58

Проверьте используемую динамическую память. Как вы транскодируете видео? Вы используете потоки или буферизуете ввод/вывод? Я бы предложил ffmpeg, когда дело доходит до работы с медиафайлами.

Marc 09.04.2022 21:16
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
2
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете увидеть, сколько памяти используется со встроенным модулем process.

const process = require("process");

В модуле process есть метод memoryUsage, который показывает информацию об использовании памяти в Node.js.

console.log(process.memoryUsage());

Когда вы запускаете код, вы должны увидеть объект со всей информацией, необходимой для использования памяти!

$ node index.js
{
  rss: 4935680,
  heapTotal: 1826816,
  heapUsed: 650472,
  external: 49879,
  arrayBuffers: 9386
}

Вот некоторые сведения о каждом свойстве.

  • rss - (Resident Set Size) Объем места, занимаемого на основном запоминающем устройстве.
  • heapTotal - Общий объем памяти в движке V8.
  • heapUsed - Объем памяти, используемый двигателем V8.
  • external — Использование памяти объектами C++, привязанными к объектам JavaScript (управляется V8).
  • arrayBuffers — память, выделенная для ArrayBuffers и Buffers.

Для вашего вопроса вам может понадобиться использовать heapTotal и heapUsed. В зависимости от значения вы можете закрыть службу. Например:

const process = require("process");

const mem = process.memoryUsage();
const MAX_SIZE = 50; // Change me!

if ((mem.heapUsed / 1000000) >= MAX_SIZE) {
  videoTranscoder.kill(); // You get the idea...
}

Деление на одну миллионную часть просто преобразует байты в мегабайты (B в МБ).

Change the code to what you like - this is just an example.

Другие вопросы по теме