diff --git a/server/package.json b/server/package.json index 5d4828dd9..c4d038751 100644 --- a/server/package.json +++ b/server/package.json @@ -55,9 +55,9 @@ }, "scripts": { "preserve": "npm run build", - "serve": "node dist/scrypted-main.js", - "serve-no-build": "node dist/scrypted-main.js", - "ts-serve": "ts-node src/scrypted-main.ts", + "serve": "node --expose-gc dist/scrypted-main.js", + "serve-no-build": "node --expose-gc dist/scrypted-main.js", + "ts-serve": "ts-node --expose-gc src/scrypted-main.ts", "prebuild": "tsc --build --clean", "build": "tsc --outDir dist", "postbuild": "node test/check-build-output.js" diff --git a/server/src/plugin/plugin-host.ts b/server/src/plugin/plugin-host.ts index 520f23ec1..1c2aa501a 100644 --- a/server/src/plugin/plugin-host.ts +++ b/server/src/plugin/plugin-host.ts @@ -421,7 +421,8 @@ export function startPluginClusterWorker() { type: 'stats', cpu: cpuUsage, memoryUsage: process.memoryUsage(), - }) + }); + global?.gc(); }, 10000); const consolePort = createConsoleServer(events); diff --git a/server/src/runtime.ts b/server/src/runtime.ts index 316d52b8a..41bc3ae82 100644 --- a/server/src/runtime.ts +++ b/server/src/runtime.ts @@ -444,18 +444,24 @@ export class ScryptedRuntime { this.invalidatePluginDevice(pluginDevice._id); } + const execArgv = ['--expose-gc']; + if (process.argv[0].endsWith('ts-node')) + execArgv.push('-r', 'ts-node/register'); + if (pluginDebug) { console.log('plugin inspect port', pluginDebug.inspectPort) + execArgv.push('--inspect'); + cluster.setupMaster({ silent: true, inspectPort: pluginDebug.inspectPort, - execArgv: process.argv[0].endsWith('ts-node') ? ['--inspect', '-r', 'ts-node/register'] : ['--inspect'], + execArgv, }); } else { cluster.setupMaster({ silent: true, - execArgv: process.argv[0].endsWith('ts-node') ? ['-r', 'ts-node/register'] : [], + execArgv, }); }