Bloga Dönindustry2026-05-2312 dk okuma
Musteriler QR yi tarayamiyor too many requests aliyor — rate-limit BUCKETS Map memory leak (PR #651 VII F1)
Mersin Tarsus Tantuni sahibi Tugay (39), Mayis ortasindan itibaren tezgaha gelen 12 musteri art arda QR taradim ama too many requests aliyorum sikayetiyle geldi. thMenu support 3 yanlis teori curuttu (threshold cok dusuk degil 100req/5min/IP, restaurant WiFi shared IP degil, retry pattern muphem). Cloudflare Workers memory metrics: Tugay s isolate Apr 15 12-18MB ortalama Apr 30 35MB May 18 Cuma 112-127MB approaching 128MB limit. Monotonically increasing — classic memory leak signature. Forensik: apps/web-menu/src/lib/rate-limit-ip-hash.ts module-scope BUCKETS Map per-IP-hash sliding-window counter lari tutuyor. Map entry sayisi Apr 15 ~3,200, May 18 ~84,500 — 80k entries 30 gunde. Kod BUCKETS.set() yapiyor her request te ama BUCKETS.delete() veya cleanup HIC YAPMIYOR. Sliding window expire olduktan sonra entry replace ediliyor ama eski entries delete edilmiyor. Memory cost: 84,500 × ~150 bytes/entry = ~12.6MB sadece BUCKETS icin; diger module-scope state + Workers runtime 100+MB a tirmandi. 128MB limit ine yaklasilirken Workers GC daha agresif oluyor request latency artiyor isolate cycling sirasinda transient 429 hatalari. **PR #651 batch VII F1** fix: opportunistic per-N-call cleanup pass eklendi. Her 500 call ta bir BUCKETS Map walk + expired entries delete. Cost: 100k entry walk ~10ms, 500 call a oranla ~20us per call negligible. Alternatives: KV/D1-backed eternal state (latency 1-2ms -> 20-50ms olur, heavy traffic feels), setInterval cleanup (Cloudflare Workers da setInterval YOK). Opportunistic pattern minimal change + negligible overhead + leak resolved. Tugay isolate Cumartesi sabah fix deploy oldu, May 19 28-35MB, May 20 18-22MB stable, May 25 16-20MB long-term. False-positive 429 rate olculemez azaldi. Pattern: in-process Map/Set/Object state cleanup mekanizmasi olmadan kullanilmamali; sliding-window expire logic replace if expired YETMEZ, expire entries DELETE edilmeli. Audit checklist: module-scope state var mi, entries delete ediliyor mu, cleanup mekanizmasi var mi, Workers memory metrics izleniyor mu, steady-state size profile edilmis mi.