diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2026-01-22 14:32:57 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-22 14:32:57 +0900 |
| commit | 2fa6ecc7efaaf9b9d189cdd3a3ebbb9171c86078 (patch) | |
| tree | 765b336c2f5b27e1df1f5ee1e14f4bb6a8e54684 /packages/backend/scripts/measure-memory.mjs | |
| parent | enhance(dev): improve mem report (#17117) (diff) | |
| download | misskey-2fa6ecc7efaaf9b9d189cdd3a3ebbb9171c86078.tar.gz misskey-2fa6ecc7efaaf9b9d189cdd3a3ebbb9171c86078.tar.bz2 misskey-2fa6ecc7efaaf9b9d189cdd3a3ebbb9171c86078.zip | |
enhance(dev): improve mem report (#17118)
* wip
* wip
* Update report-backend-memory.yml
* Update report-backend-memory.yml
* Update .github/workflows/report-backend-memory.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Diffstat (limited to 'packages/backend/scripts/measure-memory.mjs')
| -rw-r--r-- | packages/backend/scripts/measure-memory.mjs | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/packages/backend/scripts/measure-memory.mjs b/packages/backend/scripts/measure-memory.mjs index 82a5a0bf0b..749f550bcc 100644 --- a/packages/backend/scripts/measure-memory.mjs +++ b/packages/backend/scripts/measure-memory.mjs @@ -60,9 +60,9 @@ async function measureMemory() { ...process.env, NODE_ENV: 'production', MK_DISABLE_CLUSTERING: '1', - MK_FORCE_GC: '1', }, stdio: ['pipe', 'pipe', 'pipe', 'ipc'], + execArgv: [...process.execArgv, '--expose-gc'], }); let serverReady = false; @@ -104,9 +104,21 @@ async function measureMemory() { // Wait for memory to settle await setTimeout(MEMORY_SETTLE_TIME); - // Get memory usage from the server process via /proc const pid = serverProcess.pid; - const memoryInfo = await getMemoryUsage(pid); + + const beforeGc = await getMemoryUsage(pid); + + serverProcess.send('gc'); + + await new Promise((resolve) => { + serverProcess.once('message', (message) => { + if (message === 'gc ok') resolve(); + }); + }); + + await setTimeout(1000); + + const afterGc = await getMemoryUsage(pid); // Stop the server serverProcess.kill('SIGTERM'); @@ -129,7 +141,8 @@ async function measureMemory() { const result = { timestamp: new Date().toISOString(), - memory: memoryInfo, + beforeGc, + afterGc, }; return result; @@ -144,19 +157,23 @@ async function main() { } // Calculate averages - const avgMemory = structuredClone(keys); + const beforeGc = structuredClone(keys); + const afterGc = structuredClone(keys); for (const res of results) { - for (const key of Object.keys(avgMemory)) { - avgMemory[key] += res.memory[key]; + for (const key of Object.keys(keys)) { + beforeGc[key] += res.beforeGc[key]; + afterGc[key] += res.afterGc[key]; } } - for (const key of Object.keys(avgMemory)) { - avgMemory[key] = Math.round(avgMemory[key] / SAMPLE_COUNT); + for (const key of Object.keys(keys)) { + beforeGc[key] = Math.round(beforeGc[key] / SAMPLE_COUNT); + afterGc[key] = Math.round(afterGc[key] / SAMPLE_COUNT); } const result = { timestamp: new Date().toISOString(), - memory: avgMemory, + beforeGc, + afterGc, }; // Output as JSON to stdout |