Skip to content

v6.4.3-rc.1 (LXC): Pulse degrades and freezes ~2h after every start; CPU pegged, metrics write queue saturates, host must be rebooted #2146

Description

@vegancto

Environment

  • Pulse 6.4.3-rc.1 (rc channel), systemd install in an unprivileged Proxmox LXC (2 cores, 2 GB RAM, 512 MB swap, rootfs on LVM-thin), dedicated PVE host with no other guests
  • ~23 agents (21 on v6.4.5-beta.1, see note below), 8-node PVE cluster, one TrueNAS connection
  • DBs: metrics.db 618 MB (before startup cleanup), events.db 664 MB, audit.db 238 MB, unified_resources.db 174 MB

Symptom

Roughly 1h40m-2h after every service start, Pulse stops logging entirely and the LXC has to be rebooted. It then repeats. Last three runs: 2.3 h, 3.6 h and 2 h before manual reboots.

What the logs show before each freeze (persistent journal, two consecutive runs)

  1. ~45 min in: Polling task timed out; rescheduling with fresh worker for the PVE instance (1 -> 5 per 10 min). The PVE API itself answers in <50 ms from the LXC, so the stall is on the Pulse side.
  2. Slow database query on metrics.db throughout (60-110 per 10 min), INSERT durations growing from ~100 ms to 17 s just before the freeze.
  3. Metrics write queue saturated, dropping bounded batch (~100 per 15 min) and Metrics write worker lagging.
  4. Failed to save active alerts: active alert checkpoint changed during 8 consecutive attempts.
  5. Failed to send ping to agent ... i/o timeout for every agent, then no further log output until reboot.

Resource behaviour on a fresh run (sampled every 30 s)

  • Anonymous heap is a 200-500 MB sawtooth (no leak in the first 10+ min), so allocation churn is very high.
  • Page cache grows ~35 MB / 30 s from SQLite reads and fills the 2 GB cgroup.
  • Pulse averages ~1.9 of 2 cores continuously, with one thread in uninterruptible disk wait.
  • Startup Metrics retention cleanup deletes ~390k rows in ~60 s (metrics.db 618 MB -> 142 MB), and RSS spikes to ~890 MB during it.
  • With 512 MB swap the cgroup thrashes instead of OOM-killing, which is why it hangs rather than restarts.

Possibly related

Ask

  • Is there a supported way to capture a heap/CPU profile (pprof is not exposed, /debug/pprof/ returns 401)? Happy to collect one at the 1h30m mark.
  • Any setting to cap metrics write volume or make the writer back off instead of growing the backlog?

I'll report back with results after raising the LXC to 4 GB / 4 cores / no swap and setting GOMEMLIMIT.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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