# GMGN 429 at kookwatch (#2382), testmgr 14 Oct
- runtrack is NOT the cause: it goes through /opt/common/gmgnlimit.py (reserve 6). Most err lines are "held" (bucket/ban) = limiter working. Real 429s: ~3-12/h all day since 13 Oct 00:00, not tied to one job.
- All GMGN callers found import gmgnlimit (casig, xdeck, klines, radar3, trench, holders_snap) except klines2.py (not running) and hundreds of old /root scripts. So the SUM of callers exceeds what GMGN allows; state file shows consec=5, tokens 0 (ban renewing).
- Candidate culprits: holders_snap.py (cron 21:35 UTC, 2514 calls, acquire(1) default floor 4, no reserve, and calls banned(0) without reset, so it hammers whenever bucket > 5); laneradar radar3.py and klines.py as continuous callers.
- Fix at cause (shared config, needs ops): (1) holders_snap: acquire(1, timeout=300, reserve=10) so it only uses idle budget; (2) gmgnlimit CAP 20 -> 8 (burst of 20 at once likely trips the server limit; RATE 6 stays); (3) log caller name in gmgnlimit.acquire to get a per-caller count next hour.
