From 19e39f63210d5243ec91369d1e0da80f7dd5a934 Mon Sep 17 00:00:00 2001 From: gefan Date: Tue, 7 Feb 2023 00:18:48 +0800 Subject: [PATCH 1/3] kill zombie processes to reduce memory usage --- server/libs/nodeFfprobe/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/libs/nodeFfprobe/index.js b/server/libs/nodeFfprobe/index.js index bdab89ad..a2f284cb 100644 --- a/server/libs/nodeFfprobe/index.js +++ b/server/libs/nodeFfprobe/index.js @@ -18,7 +18,10 @@ module.exports = (function () { proc.stdout.on('data', function (data) { probeData.push(data) }) proc.stderr.on('data', function (data) { errData.push(data) }) - proc.on('exit', code => { exitCode = code }) + proc.on('exit', code => { + exitCode = code + proc.kill() + }) proc.on('error', err => reject(err)) proc.on('close', () => { try { From 61c32d99e7f13f7a0d30d5789289a5155d3cdb80 Mon Sep 17 00:00:00 2001 From: gefan Date: Tue, 7 Feb 2023 00:18:57 +0800 Subject: [PATCH 2/3] scan media files in batches --- server/scanner/MediaFileScanner.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/server/scanner/MediaFileScanner.js b/server/scanner/MediaFileScanner.js index b572e935..e9a54b66 100644 --- a/server/scanner/MediaFileScanner.js +++ b/server/scanner/MediaFileScanner.js @@ -115,11 +115,16 @@ class MediaFileScanner { const scanStart = Date.now() const mediaMetadata = libraryItem.media.metadata || null - const proms = [] - for (let i = 0; i < mediaLibraryFiles.length; i++) { - proms.push(this.scan(mediaType, mediaLibraryFiles[i], mediaMetadata)) + const batchSize = 32 + const results = [] + for (let batch = 0; batch < mediaLibraryFiles.length; batch += batchSize) { + const proms = [] + for (let i = batch; i < Math.min(batch + batchSize, mediaLibraryFiles.length); i++) { + proms.push(this.scan(mediaType, mediaLibraryFiles[i], mediaMetadata)) + } + results.push(...await Promise.all(proms).then((scanResults) => scanResults.filter(sr => sr))) } - const results = await Promise.all(proms).then((scanResults) => scanResults.filter(sr => sr)) + return { audioFiles: results.filter(r => r.audioFile).map(r => r.audioFile), videoFiles: results.filter(r => r.videoFile).map(r => r.videoFile), From ba07761de3093445f6dd0d9a247e1c85b2e5451f Mon Sep 17 00:00:00 2001 From: gefan Date: Tue, 7 Feb 2023 12:33:33 +0800 Subject: [PATCH 3/3] Revert "kill zombie processes to reduce memory usage" This reverts commit 19e39f63210d5243ec91369d1e0da80f7dd5a934. --- server/libs/nodeFfprobe/index.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/server/libs/nodeFfprobe/index.js b/server/libs/nodeFfprobe/index.js index a2f284cb..bdab89ad 100644 --- a/server/libs/nodeFfprobe/index.js +++ b/server/libs/nodeFfprobe/index.js @@ -18,10 +18,7 @@ module.exports = (function () { proc.stdout.on('data', function (data) { probeData.push(data) }) proc.stderr.on('data', function (data) { errData.push(data) }) - proc.on('exit', code => { - exitCode = code - proc.kill() - }) + proc.on('exit', code => { exitCode = code }) proc.on('error', err => reject(err)) proc.on('close', () => { try {