Как обрабатывать «обработчик неустранимых ошибок API, возвращенный после того, как процессу не хватает памяти» в коде (node.js)?

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

function alloc (size) {
    const numbers = size / 8;
    const arr = []
    arr.length = numbers; // Simulate allocation of 'size' bytes.
    for (let i = 0; i < numbers; i++) {
        arr[i] = i;
    }
    return arr;
};

const allocations = []; 

function allocToMax () {

    console.info("Start");

    const field = 'heapUsed';
    const mu = process.memoryUsage();
    console.info(mu);
    const gbStart = mu[field] / 1024 / 1024 / 1024;
    console.info(`Start ${Math.round(gbStart * 100) / 100} GB`);

    let allocationStep = 100 * 1024;

    while (true) {

        const allocation = alloc(allocationStep);

        allocations.push(allocation);

        const mu = process.memoryUsage();
        const mbNow = mu[field] / 1024 / 1024 / 1024;
        console.info(`Total allocated       ${Math.round(mbNow * 100) / 100} GB`);
        console.info(`Allocated since start ${Math.round((mbNow - gbStart) * 100) / 100} GB`);
    }
};

process.on('exit','SIGINT','', function() {
    console.info("tata");
});

allocToMax();

Я запускаю программу с верхним пределом памяти 4 МБ, как этот узел --max-old-space-size="4" index.js`. Как и ожидалось, программа в конечном итоге выйдет из памяти, создав исключение, как показано ниже.

*#
# Fatal error in , line 0
# API fatal error handler returned after process out of memory
#*
or 
*FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory**
I am trying to detect the SIGNAL or anything else in code the process emits in case of Memory leak or FATAL ERROR so that I can perform a graceful exit and restart the server.

В основном мне нужен обработчик, когда процесс уходит или вот-вот закончится память

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
2 254
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

При использовании pm2-runtime сервер автоматически перезагружается, не убивая докер.

http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/

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