كان المتجر الإلكتروني للموزع الفيدرالي لمعدات تكنولوجيا المعلومات بطيئًا. استغرق فتح صفحات الكتالوج وبطاقات المنتج من 7 إلى 15 ثانية. ارتفع معدل الارتداد إلى 62%، وانخفض تصنيف البحث. خلال 3 أيام عمل، قمنا بحل المشكلة وحصلنا على ثانيتين من LCP دون تغيير الخادم.
بادئ ذي بدء، لم نذهب إلى إعدادات ذاكرة التخزين المؤقت. قمنا بتحليل سجلات الخادم، وحددنا الأحمال القصوى ووجدنا ثلاثة أسباب جذرية:
استعلامات SQL بطيئة. أدت تصفية كتالوج يضم أكثر من 250 عنصرًا إلى إنشاء استعلامات ثقيلة في الجدولين b_iblock_element وb_iblock_section. في 80% من الحالات تكون المشكلة في قاعدة البيانات وليس في الخادم الضعيف.
لا يوجد تخزين مؤقت على مستوى خادم الويب. أرسل Nginx بأمانة كل طلب عبر PHP، على الرغم من أن 90% من صفحات الدليل لم تتغير لساعات.
صور غير مضغوطة حجم صفحة الكتالوج هو 4.2 ميجابايت. لا يوجد WebP، ولا يوجد تحميل كسول، ولا يوجد تصغير.
قمنا بتحليل الاستعلامات البطيئة عبر EXPLAIN وأضفنا الفهارس المفقودة إلى جداول الكتالوج. قمنا بتعديل معلمات MySQL: تمت زيادة حجم innodb_buffer_pool_size، وتم إضافة query_cache_size لـ MySQL 5.7. تنظيف جداول التاريخ والسجلات المؤرشفة.