Узел управления памятью JS на одной плате ARM - PullRequest
0 голосов
/ 06 апреля 2019

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

app.get('/api/preview-small/:filename',(req,res)=>{
    let filename = req.params.filename;


    sharp('files/' + filename)
        .resize(200, 200, {
            fit: sharp.fit.inside,
            withoutEnlargement: true
        })
        .toFormat('jpeg')
        .toBuffer()
        .then(function(outputBuffer) {
            res.writeHead('200',{"Content-Type":"image/jpeg"});
            res.write(outputBuffer);
            res.end();
        });

});

Я использую приведенный выше код на одноплатном компьютере Rock64 с оперативной памятью 1 ГБ. Когда я запускаю команду Linux htop и наблюдаю за использованием памяти, я вижу, что использование памяти увеличивается экспоненциально с 10% до 60% после каждого вызова приложения nodejs, и оно никогда не падает.

Использование процессора enter image description here

CPU Usage

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

или если я перенесу аналогичный фрагмент кода в облако, он будет продолжать занимать память, даже когда он не работает?

Любой, кто использует острый модуль, сталкивается с подобной проблемой или это известная проблема с node.js. У нас есть способ очистить / очистить память или узел будет выполнять сборку мусора?

Любая помощь приветствуется. Спасибо

1 Ответ

1 голос
/ 06 апреля 2019

sharp имеет встроенные средства отладки памяти:

http://sharp.dimens.io/en/stable/api-utility/#cache

Вы можете управлять кэшем libvips и получать статистику об использовании ресурсов.

Версия узлаоказывает очень сильное влияние на поведение памяти.Это много обсуждалось на трекере острых вопросов, см., Например:

https://github.com/lovell/sharp/issues/429

Или, возможно:

https://github.com/lovell/sharp/issues/778

...