Docs: Redis cache behaviour during an outage, what was tested live, CACHE_KEY_PREFIX
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
18
CLAUDE.md
18
CLAUDE.md
@@ -441,7 +441,7 @@ preferred setup, because there is then no key to leak. **Never let the server ru
|
||||
`django-insecure-…` fallback from `config/settings.py`: that string is committed here, so
|
||||
anyone who can read this repo can forge a token for any user.**
|
||||
|
||||
## وضعیت ۲۰۲۶-۱۰-۰۷ — روی سرور (`4c60108`، ریاستارت ۱۳:۵۹)
|
||||
## وضعیت ۲۰۲۶-۱۰-۰۷ — روی سرور (`2779270`، ریاستارت ۱۴:۱۶)
|
||||
|
||||
بکاپهای همان روز در `.deploy-backups/`: `env-before-secretkey-redis-20261007-135850`،
|
||||
`unit-gunicorn-mathapp-before-20261007-135850.service`، `db-before-deploy-20261007-13*.sqlite3`.
|
||||
@@ -453,9 +453,19 @@ anyone who can read this repo can forge a token for any user.**
|
||||
دیتابیس است، نه امضاشده، پس نشستها نمیمیرند و فرانت بیصدا توکنِ تازه میگیرد؛ این را با ورودِ واقعی
|
||||
**نسنجیدم**.
|
||||
- **`CACHE_URL=redis://127.0.0.1:6379/1`** (Redisِ مشترکِ ماشین، بدونِ رمز، `maxmemory 0`؛ دیتابیسِ ۰ مالِ
|
||||
دیگران است و دست نخورد). سقفِ نرخ حالا مشترک است: رگبارِ ۶۰۰ درخواستی ۱۲۸ تا `200` داد (پیش از آن
|
||||
۳۶۰ = ۳ worker × ۱۲۰). ⚠️ اگر این Redis بخوابد، هر مسیرِ throttleدار خطا میدهد؛ برگشت: خطِ `CACHE_URL` را
|
||||
از `.env` خالی کنید و ریاستارت.
|
||||
دیگران است و دست نخورد). کلیدها پیشوندِ `tadrisino-mathapp` دارند و کش `config.cache.ResilientRedisCache`
|
||||
است: خطای Redis ۵۰۰ نمیشود، خطای ERRORِ لاگشده (هر ۳۰ ثانیه یک بار) و **سقفهای مبتنی بر کش اعمال
|
||||
نمیشوند** (fail-open: throttleهای DRF، پنجرهی ساعتیِ OTP، سقفِ ورودِ ادمین، قفلِ بازسنجیِ پرداخت)،
|
||||
`/api/health` ۵۰۳ میدهد؛ آنچه در دیتابیس شمرده میشود (cooldown و سقفِ روزانهی پیامک، حدسِ هر کد) میماند.
|
||||
Timeoutِ اتصال و خواندن ۱ ثانیه. آزموده شد: ۱۱ تستِ واحد (از جمله redis-serverِ محلی که وسطِ کار میمیرد و
|
||||
بدونِ ریاستارتِ برنامه برمیگردد)، تمرینِ قطعی روی خودِ سرور (پروسهی جدا با کش روی پورتِ بسته: همه ۲۰۰،
|
||||
۰٫۳ ثانیه برای ۷ درخواست، health ۵۰۳)، و رگبارِ ۶۰۰ درخواستی روی سایتِ زنده (۱۲۴ تا ۲۰۰، پیشتر ۳۶۰).
|
||||
**آزموده نشد:** قطعیِ واقعیِ Redisِ مشترک (مالِ ما نیست)، و رفتارِ آن زیرِ فشارِ حافظه. برگشت: خطِ
|
||||
`CACHE_URL` را در `.env` خالی کنید و ریاستارت.
|
||||
- **آزمونِ زنده با کاربرِ آزمایشی** (۳۲ از ۳۲ سبز؛ کاربر و دادهاش پاک شد، شمارشها با پیش از آزمون برابر):
|
||||
ورود با OTP، توکنِ تازه، تمدید (توکنِ تمدیدِ قدیمی ۴۰۱)، جزیرهی قفل ۴۰۳، بیجواب ۴۰۹، ادعای کمتر از
|
||||
تعدادِ سوال ۴۰۹، پایانِ جزیره و درس بعد از جواب، Idempotency-Key، و خروج. رابطِ کاربریِ فرانت در مرورگر
|
||||
رانده **نشد** (همان فراخوانیها با API زده شد).
|
||||
- پایانِ درس/جزیره بیجواب و روی جزیرهی قفل پذیرفته نمیشود، ۱۵ مسیر سقفِ نرخ گرفتند، `deploy.sh`
|
||||
پیش از `migrate` بکاپ میگیرد و سلامت را از سوکتِ gunicorn میسنجد.
|
||||
- نسخهی کتابخانههای `requirements.txt` قفل شد (نسخههای روی سرور).
|
||||
|
||||
Reference in New Issue
Block a user