Skip to content

PM2 God Daemon Memory Leak (6.0.14) #6113

@whh8162880

Description

@whh8162880

Hi,

I’m seeing what appears to be a serious memory leak in the PM2 God Daemon on PM2 v6.0.14.

Environment
PM2 version: 6.0.14
Node.js version: 20.20.2
OS: Linux x64 Debian 12
Architecture: AMD EPYC
Workload:
Long-running websocket game servers
Multiple Node.js cluster processes
uWebSockets.js
High-frequency websocket traffic
Problem

The PM2 God Daemon process gradually grows to very large memory usage over time.

After about 22 days uptime:

PM2 daemon RSS reached ~5.7GB
System memory pressure became dangerous
Applications themselves remained healthy

The issue appears isolated to the PM2 daemon process.

Important Details
Logs are NOT large

~/.pm2/logs size is only:

3.5M

So this does not appear to be caused by large log files.

Watch mode is disabled

All applications show:

watching: disabled
Restart counts are low

Most processes only restarted a few times.

No restart storm is occurring.

Applications remain stable

Game servers and backend services continue running normally while the PM2 daemon memory keeps increasing.

Current PM2 Report
pm2d version : 6.0.14
node version : 20.20.2
uptime : 31599min

Processes are running in cluster mode.

Suspicion

This may be related to:

PM2 internal IPC/event bus
stdout/stderr stream handling
cluster mode worker communication
websocket high-frequency output
daemon-side buffering/caching leak

Even though actual log files remain very small.

Temporary Fix

Restarting the PM2 daemon fixes the memory usage:

pm2 save
pm2 kill
pm2 resurrect

After restart, daemon memory returns to normal.

Additional Notes
No watch mode
No large logs
No massive restart loops
Memory growth is only observed in the PM2 daemon
Workload is websocket-heavy and long-running

Please let me know if additional debug information would help.

Thanks.

--- PM2 report ----------------------------------------------------------------
Date : Sat May 16 2026 16:13:59 GMT+0800 (Taiwan Standard Time)

--- Daemon -------------------------------------------------
pm2d version : 6.0.14
node version : 20.20.2
node path : /usr/bin/sh
argv : /usr/bin/node,/usr/lib/node_modules/pm2/lib/Daemon.js
argv0 : /usr/bin/node
user : root
uid : 0
gid : 0
uptime : 31599min

--- CLI ----------------------------------------------------
local pm2 : 6.0.14
node version : 20.20.2
node path : /usr/bin/pm2
argv : /usr/bin/node,/usr/lib/node_modules/pm2/bin/pm2,report
argv0 : /usr/bin/node
user : root
uid : 0
gid : 0

--- System info --------------------------------------------
arch : x64
platform : linux
type : Linux
cpus : AMD EPYC Processor
cpus nb : 16
freemem : 17771601920
totalmem : 33632563200
home : /root

--- PM2 list -----------------------------------------------
┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 6 │ alpha │ default │ 0.1.773 │ cluster │ 3695178 │ 3D │ 0 │ online │ 3.6% │ 246.3mb │ root │ disabled │
│ 5 │ beta │ default │ 0.1.573 │ cluster │ 3694641 │ 3D │ 1 │ online │ 0% │ 380.7mb │ root │ disabled │
│ 1 │ center │ default │ 0.0.183 │ cluster │ 3676961 │ 3D │ 8 │ online │ 7.1% │ 164.1mb │ root │ disabled │
│ 2 │ db │ default │ 0.0.111 │ cluster │ 3677294 │ 3D │ 7 │ online │ 7.1% │ 1.9gb │ root │ disabled │
│ 8 │ gs0 │ default │ 0.3.86 │ cluster │ 15117 │ 3D │ 10 │ online │ 3.6% │ 452.4mb │ root │ disabled │
│ 9 │ gs1 │ default │ 0.3.86 │ cluster │ 15251 │ 3D │ 3 │ online │ 0% │ 446.3mb │ root │ disabled │
│ 17 │ gs10 │ default │ 0.3.86 │ cluster │ 16289 │ 3D │ 3 │ online │ 0% │ 425.0mb │ root │ disabled │
│ 10 │ gs2 │ default │ 0.3.86 │ cluster │ 15393 │ 3D │ 4 │ online │ 0% │ 469.3mb │ root │ disabled │
│ 11 │ gs3 │ default │ 0.3.86 │ cluster │ 15525 │ 3D │ 3 │ online │ 0% │ 446.6mb │ root │ disabled │
│ 12 │ gs5 │ default │ 0.3.86 │ cluster │ 15650 │ 3D │ 3 │ online │ 3.6% │ 432.5mb │ root │ disabled │
│ 13 │ gs6 │ default │ 0.3.86 │ cluster │ 15771 │ 3D │ 2 │ online │ 3.6% │ 440.4mb │ root │ disabled │
│ 14 │ gs7 │ default │ 0.3.86 │ cluster │ 15906 │ 3D │ 3 │ online │ 3.6% │ 405.8mb │ root │ disabled │
│ 15 │ gs8 │ default │ 0.3.86 │ cluster │ 16038 │ 3D │ 4 │ online │ 0% │ 468.9mb │ root │ disabled │
│ 16 │ gs9 │ default │ 0.3.86 │ cluster │ 16157 │ 3D │ 4 │ online │ 0% │ 438.7mb │ root │ disabled │
│ 7 │ login │ default │ 0.0.231 │ cluster │ 878482 │ 2D │ 8 │ online │ 3.6% │ 165.3mb │ root │ disabled │
│ 3 │ role │ default │ 0.1.713 │ cluster │ 3844387 │ 3D │ 6 │ online │ 10.7% │ 735.6mb │ root │ disabled │
└────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
Module
┌────┬──────────────────────────────┬───────────────┬──────────┬──────────┬──────┬──────────┬──────────┬──────────┐
│ id │ module │ version │ pid │ status │ ↺ │ cpu │ mem │ user │
├────┼──────────────────────────────┼───────────────┼──────────┼──────────┼──────┼──────────┼──────────┼──────────┤
│ 0 │ pm2-logrotate │ 3.0.0 │ 15355 │ online │ 0 │ 0% │ 78.9mb │ root │
└────┴──────────────────────────────┴───────────────┴──────────┴──────────┴──────┴──────────┴──────────┴──────────┘

--- Daemon logs --------------------------------------------
/root/.pm2/pm2.log last 20 lines:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions