Disabled why-is-node-running to assess OOM.

This commit is contained in:
DebaucheryLibrarian 2021-12-31 01:45:03 +01:00
parent 2dcdbf9c37
commit 6760c11881
2 changed files with 16 additions and 12 deletions

View File

@ -318,6 +318,7 @@ module.exports = {
missingDateLimit: 3, missingDateLimit: 3,
memorySampling: { memorySampling: {
enabled: false, enabled: false,
sampleDuration: 300000, // 5 minutes
snapshotIntervals: [], snapshotIntervals: [],
}, },
media: { media: {

View File

@ -2,7 +2,7 @@
const config = require('config'); const config = require('config');
const util = require('util'); const util = require('util');
const log = require('why-is-node-running'); // const log = require('why-is-node-running');
const Inspector = require('inspector-api'); const Inspector = require('inspector-api');
const fs = require('fs').promises; const fs = require('fs').promises;
const dayjs = require('dayjs'); const dayjs = require('dayjs');
@ -25,6 +25,7 @@ const getFileEntries = require('./utils/file-entries');
const inspector = new Inspector(); const inspector = new Inspector();
let done = false; let done = false;
/*
function logActive() { function logActive() {
setTimeout(() => { setTimeout(() => {
log(); log();
@ -34,10 +35,11 @@ function logActive() {
} }
}, typeof argv.logActive === 'number' ? argv.logActive : 60000); }, typeof argv.logActive === 'number' ? argv.logActive : 60000);
} }
*/
async function snapshotMemory() { async function snapshotMemory(trigger) {
const profile = await inspector.heap.takeSnapshot(); const profile = await inspector.heap.takeSnapshot();
const filepath = `traxxx_snapshot_${dayjs().format('YYYY-MM-DD_HH-mm-ss')}.heapprofile`; const filepath = `traxxx_snapshot_${trigger}M_${dayjs().format('YYYY-MM-DD_HH-mm-ss')}.heapsnapshot`;
logger.info(`Starting heap snapshot, memory usage: ${process.memoryUsage.rss() / 1000000} MB`); logger.info(`Starting heap snapshot, memory usage: ${process.memoryUsage.rss() / 1000000} MB`);
@ -48,9 +50,10 @@ async function snapshotMemory() {
} }
async function stopMemorySample(snapshotTriggers) { async function stopMemorySample(snapshotTriggers) {
const usage = process.memoryUsage.rss() / 1000000;
const profile = await inspector.heap.stopSampling(); const profile = await inspector.heap.stopSampling();
const filepath = `traxxx_sample_${dayjs().format('YYYY-MM-DD_HH-mm-ss')}.heapprofile`; const filepath = `traxxx_sample_${dayjs().format('YYYY-MM-DD_HH-mm-ss')}.heapprofile`;
const usage = process.memoryUsage.rss() / 1000000;
await inspector.heap.disable(); await inspector.heap.disable();
await fs.writeFile(filepath, JSON.stringify(profile)); await fs.writeFile(filepath, JSON.stringify(profile));
@ -58,7 +61,7 @@ async function stopMemorySample(snapshotTriggers) {
logger.info(`Saved heap sample to ${filepath}`); logger.info(`Saved heap sample to ${filepath}`);
if (usage > snapshotTriggers[0]) { if (usage > snapshotTriggers[0]) {
await snapshotMemory(); await snapshotMemory(snapshotTriggers[0]);
return snapshotTriggers.slice(1); return snapshotTriggers.slice(1);
} }
@ -79,22 +82,22 @@ async function startMemorySample(snapshotTriggers = []) {
if (!done) { if (!done) {
await startMemorySample(newSnapshotTriggers); await startMemorySample(newSnapshotTriggers);
} }
}, 30000); }, config.memorySampling.sampleDuration);
} }
async function init() { async function init() {
try { try {
if (argv.server) {
await initServer();
return;
}
if (argv.sampleMemory) { if (argv.sampleMemory) {
await startMemorySample(config.memorySampling.snapshotIntervals); await startMemorySample(config.memorySampling.snapshotIntervals);
} }
if (argv.logActive) { if (argv.logActive) {
logActive(); // logActive();
}
if (argv.server) {
await initServer();
return;
} }
if (argv.updateSearch) { if (argv.updateSearch) {