feat(pl24): günlük HTTP bütçesi, kullanıcı rezervi ve proxy_logs telemetrisi #262
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Faz 1 / adım 2: PL24 hacim freni + görünürlük. Analiz
/home/s/ss/plv2.md(bulgular consumers_jobs-03/06/07, deploy_ops-13).Sorun
İki hesap banı da günde 5-7 bin kategori yazan (≈10 bin+ istek) otomatik drill dalgalarının ardından geldi; gerçek kullanıcı decode'u ≤14/gün. Mevcut korumaların hepsi iş-seviyesinde (iş/dk, iş/gün) — HTTP isteği sayan hiçbir tavan yoktu. Üstelik PL24 çağrıları
proxy_logs'a hiç yazılmıyordu (yalnız pcat/emex), bu yüzden hacim ancak ban'dan sonra, DB satır sayılarından geriye dönük çıkarılabildi. Kill switch de yalnızdecodeVin'i kapatıyordu; drill, backfill ve katalog gezinmesi "kapalı" kaynağa istek atmaya devam ediyordu.Değişiklik
Yeni
PL24BudgetService— tüm PL24 upstream trafiği için tek geçit:pl24:http:<gün>(Redis, 8 gün TTL), tavanPL24_HTTP_DAILY_MAX(varsayılan 1200).PL24_HTTP_USER_RESERVE(varsayılan %40): backfill tavanın %60'ında durur, kullanıcı decode'u sonuna kadar akar. Kaçak bir backfill müşteriyi aç bırakamaz. Lane ayrımı mevcutisBackfillContext()ile.Telemetri:
ProxyServiceLeg+=pl24_http,pl24_auth. Login, authorize ve tüm katalog fetch'leri artıkproxy_logs'a yazıyor (provider, hesap, status, süre, 403/429 →banned, taşıma hatası sınıflandırma). "Hangi gün kaç istek attık, ilk 401/403 ne zaman başladı" sorusu artık ban'dan önce yanıtlanabilir.Kill switch yayıldı:
kill-source-pl24artıkbudgetedFetchiçinde — decode + drill + backfill + browse + görsel indirme dahil tüm katalog trafiğini kapatıyor.Doğrulama
pl24-budget.service.spec.ts: 9 test (tavan, kullanıcı rezervi, reddedilen çağrının ağa çıkmaması, Redis fail-open, telemetri biçimi ve leg ayrımı, ban sinyali, taşıma hatası sınıflandırma).tsc+biometemiz.Adım 1'in prod ölçümü (bu PR'ın öncülü, PR #261)
Oturum modeli 10:06 UTC'de prod'a indi. 25 dakikalık pencere:
Eski modelde aynı pencerede en az 2-3 yeniden login olurdu. Oturum kalıcı, servis anahtarı yalnız kullanıldığında yenileniyor.
Öneri
Merge sonrası prod env:
PL24_HTTP_DAILY_MAX=1200açıkça ayarlanabilir (varsayılan da 1200). Birkaç gün telemetri toplandıktan sonra tavan bilinçli olarak yükseltilir — Faz 3'te backfill açılışının ön koşulu bu.🤖 Generated with Claude Code
Faz 1 / adım 2 (analiz: /home/s/ss/plv2.md, bulgular consumers_jobs-03/06/07, deploy_ops-13). SORUN: İki PL24 hesap banı da günde 5-7 bin kategori yazan (≈10 bin+ istek) otomatik drill dalgalarının ardından geldi; gerçek kullanıcı decode'u ≤14/gün. Mevcut korumaların hepsi iş-seviyesinde (iş/dk, iş/gün) — HTTP isteği sayan hiçbir tavan yoktu. Üstelik PL24 çağrıları `proxy_logs`'a hiç yazılmıyordu (yalnız pcat/emex), bu yüzden hacim ancak ban'dan SONRA, DB satır sayılarından geriye dönük çıkarılabildi. Kill switch de yalnız decodeVin'i kapatıyordu; drill, backfill ve katalog gezinmesi "kapalı" kaynağa istek atmaya devam ediyordu. DEĞİŞİKLİK: - Yeni `PL24BudgetService`: tüm PL24 upstream trafiği için tek geçit. - Günlük sayaç `pl24:http:<gün>` (Redis, 8 gün TTL); tavan `PL24_HTTP_DAILY_MAX` (varsayılan 1200). - Kullanıcı rezervi `PL24_HTTP_USER_RESERVE` (varsayılan %40): backfill tavanın %60'ında durur, kullanıcı decode'u sonuna kadar akar — kaçak bir backfill müşteriyi asla aç bırakamaz. Lane ayrımı mevcut `isBackfillContext()` ile. - Reddedilen çağrı ağa hiç çıkmaz ve telemetriye yazılmaz. - Redis düşerse fail-open (auth/katalog telemetri yüzünden bloklanmaz). - Telemetri: `ProxyServiceLeg` += `pl24_http`, `pl24_auth`. Login, authorize ve tüm katalog fetch'leri `proxy_logs`'a yazıyor (provider dataimpulse/none, sessionKey=hesap, status, süre, 403/429 → banned, taşıma hatası sınıflandırma). Artık "hangi gün kaç istek attık, ilk 401/403 ne zaman başladı" sorusu ban'dan ÖNCE yanıtlanabilir. - Kill switch yayıldı: `kill-source-pl24` artık `budgetedFetch` içinde, yani decode + drill + backfill + browse + görsel indirme dahil TÜM katalog trafiğini kapatıyor (eskiden yalnız decodeVin). - `fetchWithRetry` 401 çaresi netleşti: yalnız servis token'ı tazelenir; oturumun kendisi gerekirse auth katmanında düşürülür. Test: yeni `pl24-budget.service.spec.ts` (9 test: tavan, kullanıcı rezervi, reddedilen çağrının ağa çıkmaması, Redis fail-open, telemetri biçimi/leg ayrımı, ban sinyali, taşıma hatası sınıflandırma). Etkilenen paketler: 197 test geçti. tsc + biome temiz. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>root referenced this pull request2026-09-17 13:45:30 +03:00