diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2026-01-22 12:16:38 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-22 12:16:38 +0900 |
| commit | 2b3d72bb73e00da9b748fcfe21f0dd598511d1dc (patch) | |
| tree | 148c01114d146c18989d0a7de6af734dc8f0e4a5 | |
| parent | lint (diff) | |
| download | misskey-2b3d72bb73e00da9b748fcfe21f0dd598511d1dc.tar.gz misskey-2b3d72bb73e00da9b748fcfe21f0dd598511d1dc.tar.bz2 misskey-2b3d72bb73e00da9b748fcfe21f0dd598511d1dc.zip | |
Update measure-memory.mjs (#17116)
| -rw-r--r-- | packages/backend/scripts/measure-memory.mjs | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/packages/backend/scripts/measure-memory.mjs b/packages/backend/scripts/measure-memory.mjs index baa4198adf..4358bfee5b 100644 --- a/packages/backend/scripts/measure-memory.mjs +++ b/packages/backend/scripts/measure-memory.mjs @@ -18,12 +18,11 @@ import { dirname, join } from 'node:path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); +const SAMPLE_COUNT = 3; // Number of samples to measure const STARTUP_TIMEOUT = 120000; // 120 seconds timeout for server startup const MEMORY_SETTLE_TIME = 10000; // Wait 10 seconds after startup for memory to settle async function measureMemory() { - const startTime = Date.now(); - // Start the Misskey backend server using fork to enable IPC const serverProcess = fork(join(__dirname, '../built/boot/entry.js'), ['expose-gc'], { cwd: join(__dirname, '..'), @@ -107,12 +106,7 @@ async function measureMemory() { vmSize: null, }; } catch { - memoryInfo = { - rss: null, - heapUsed: null, - vmSize: null, - error: 'Could not measure memory', - }; + throw new Error('Failed to get memory usage via ps command'); } } @@ -137,15 +131,45 @@ async function measureMemory() { const result = { timestamp: new Date().toISOString(), - startupTimeMs: startupTime, memory: memoryInfo, }; + return result; +} + +async function main() { + // 直列の方が時間的に分散されて正確そうだから直列でやる + const results = []; + for (let i = 0; i < SAMPLE_COUNT; i++) { + const res = await measureMemory(); + results.push(res); + } + + // Calculate averages + const avgMemory = { + rss: 0, + heapUsed: 0, + vmSize: 0, + }; + for (const res of results) { + avgMemory.rss += res.memory.rss ?? 0; + avgMemory.heapUsed += res.memory.heapUsed ?? 0; + avgMemory.vmSize += res.memory.vmSize ?? 0; + } + avgMemory.rss = Math.round(avgMemory.rss / SAMPLE_COUNT); + avgMemory.heapUsed = Math.round(avgMemory.heapUsed / SAMPLE_COUNT); + avgMemory.vmSize = Math.round(avgMemory.vmSize / SAMPLE_COUNT); + + const result = { + timestamp: new Date().toISOString(), + memory: avgMemory, + }; + // Output as JSON to stdout console.log(JSON.stringify(result, null, 2)); } -measureMemory().catch((err) => { +main().catch((err) => { console.error(JSON.stringify({ error: err.message, timestamp: new Date().toISOString(), |