ebfd0967c1
gates / gates (push) Failing after 12s
Two whole_guest_backup_failed alerts at 04:30 and 04:32 CEST were one incident, and not on either customer box: ep0's proxmox-backup-proxy was active, holding its listening socket, and accepting nothing. Root cause: accept() returning EMFILE. The process held exactly 1024 fds -- its systemd-default soft RLIMIT_NOFILE -- of which 1016 were sockets and 547 connections sat in CLOSE-WAIT. The 1024-deep accept backlog had overflowed (Recv-Q 1025), so every client timed out. It was wedged from its own loopback too, which is what moved this from a network problem to a process problem. Fed by ~85k requests/day (a flat 3,538/hour) against an endpoint written to weekly, that leak reached the ceiling in 14 days of uptime. Fix: LimitNOFILE=65536 drop-ins for both PBS units, restart, verified from both boxes (200 in ~0.1s, felhom-pbs active), then re-drove the missed backups through the product path -- POST /backup?target=felhom-pbs on each agent's local API, not a hand-run vzdump. demo-felhom ct/9201/2026-08-18T03:57:43Z 4.10 GB 36.4s demo-hp ct/9201/2026-08-18T03:58:43Z 4.29 GB 41.5s Both host reports now carry felhom-pbs success=true, so the hub is green on the evidence rather than on a restart having been performed. No data lost, no backup skipped: the daily local tier was never affected and the PBS tier is weekly, so the window cost exactly one attempt. Evidence copied off ep0 BEFORE the restart, per standing rule 5. Filed: R-336 (the ~1 req/s poll rate is the real defect; the raised ceiling is mitigation, not a cure), R-337 (a status endpoint that trailed its own artifact by minutes then caught up -- WATCHING, downgraded from the defect I first wrote, because it self-corrected), R-338 (demo-hp is not on the R-50 island at all and nodes.md says it is; its local API is bound to the customer LAN). R-334 updated: still open, now one version wider (controller 0.216.0 vs golden 0.214.0). golden-currency is the only failing gate and is inherited -- it reads files this session did not touch -- so this push used --no-verify, stated per .claude/rules/gates.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016p1PTCzb8rF5G9Aa1qhpBN
29 lines
1.0 KiB
Plaintext
29 lines
1.0 KiB
Plaintext
### post-fix Tue Aug 18 04:00:41 UTC 2026
|
|
proxy_pid=542065 fds=18
|
|
Max open files 65536 65536 files
|
|
State Recv-Q Send-Q Local Address:Port Peer Address:Port
|
|
LISTEN 0 1024 *:8007 *:*
|
|
1 ESTAB
|
|
1 LISTEN
|
|
### snapshots
|
|
-- demo-felhom
|
|
2026-08-04T04:49:44Z
|
|
2026-08-11T04:54:07Z
|
|
2026-08-18T03:57:43Z
|
|
-- demo-hp
|
|
2026-08-04T19:24:16Z
|
|
2026-08-11T19:29:13Z
|
|
2026-08-18T03:58:43Z
|
|
### dropins
|
|
# 2026-08-18: proxy wedged after 14d uptime — accept() returned EMFILE at the
|
|
# systemd default soft limit of 1024 fds (1016 sockets, 547 in CLOSE-WAIT),
|
|
# the 1024-deep accept backlog overflowed, and every PBS client timed out.
|
|
# ~85k requests/day against this endpoint; 1024 is not a sane ceiling for it.
|
|
[Service]
|
|
LimitNOFILE=65536
|
|
# 2026-08-18: raised alongside the proxy (see its 20-nofile.conf). This daemon
|
|
# was NOT the one that exhausted fds (it held 15), but the systemd default 1024
|
|
# is not a sane ceiling for a PBS backend either.
|
|
[Service]
|
|
LimitNOFILE=65536
|