کاهش زمان پاسخ یک فروشگاه پرترافیک
سرور منابع کافی داشت، اما تنظیمات دیتابیس، ظرفیت پردازش و نبود کش باعث صف طولانی درخواستها شده بود.
وضعیت اولیه
یک فروشگاه ووکامرسی با بیش از صد هزار سفارش، با وجود سرور قدرتمند، در پاسخگویی ناپایدار بود. همه workerهای PHP اشغال میشدند، حافظه دیتابیس با حجم داده تناسب نداشت و کش صفحه و object cache عملاً فعال نبود. CDN بخشی از کندی را پنهان میکرد، اما درخواست مستقیم به مبدا معمولاً ۹ تا ۱۸ ثانیه منتظر میماند و گاهی timeout میشد.
روش بررسی
- اندازهگیری TTFB مستقیم و همزمان برای تفکیک مشکل شبکه از صف پردازش
- بررسی ظرفیت PHP-FPM، مصرف هر worker و وضعیت صف درخواستها
- تحلیل تنظیمات MariaDB در برابر اندازه واقعی دیتابیس و جدولهای پرترافیک
- بررسی مسیر کش، هدرهای پاسخ و استثناهای لازم برای سبد خرید و حساب کاربری
اقدامات انجامشده
- تنظیم ظرفیت PHP-FPM متناسب با حافظه و الگوی بار واقعی
- بازتنظیم MariaDB و اختصاص حافظه مناسب به buffer pool
- راهاندازی Redis برای object cache و کنترل نرخ hit پس از warm-up
- قرار دادن reverse proxy و کش صفحه با bypass دقیق برای صفحات و کاربران پویا
- آرشیو کنترلشده دادههای قدیمی و بهینهسازی جدولها پس از تهیه و آزمون نسخه پشتیبان
مقایسه قبل و بعد
| شاخص | قبل | بعد |
|---|---|---|
| TTFB مبدا | ۹–۱۸ ثانیه؛ گاهی تا ۷۴ ثانیه | ۲٫۷–۳٫۵ ثانیه در cache miss |
| TTFB کششده | حدود ۱٫۴ ثانیه از CDN | ۰٫۱۷–۰٫۲۳ ثانیه از کش مبدا |
| Object cache | فعال نبود | Redis با hit rate نهایی حدود ۹۳٪ |
| حجم دیتابیس | حدود ۳٫۰۱ گیگابایت | حدود ۲٫۵۹ گیگابایت؛ ۴۲۰ مگابایت کمتر |
درباره اندازهگیری: اعداد در چند مرحله و با درخواستهای مستقیم به مبدا اندازهگیری شدهاند. نتیجه cache hit با cache miss یکسان نیست و صفحات شخصی مانند سبد خرید عمداً از کش عمومی عبور نمیکنند.
اثر عملی تغییر
زمان پاسخ مسیرهای قابل کش کاهش یافت. اعداد پاسخ کششده و پاسخ مستقیم مبدا جداگانه گزارش شدهاند؛ عملکرد صفحات پویا به بررسی مستقل نیاز دارد.
خدمت مرتبط را ببینید ←