أغلب أصحاب المتاجر الإلكترونية يعتقدون بأن خفض تكاليف استضافة ماجنتو يعني بالضرورة ترقية السيرفر، بينما في الواقع، زيادة حجم السيرفر قد يرفع الفاتورة الشهرية بشكل كبير دون حل مشاكل الأداء الجذرية.
في دراسة الحالة هذه سنوضح كيف ساعدنا عميلاً في تحسين أداء متجر ماجنتو عبر ضبط إعدادات Elasticsearch وMySQL/MariaDB، مما أدى إلى تقليل استهلاك موارد السيرفر وتخفيض التكاليف بأكثر من 52%.
التحديات التي واجهناها
1. أعطال متكررة في Elasticsearch
خدمة Elasticsearch كانت تتوقف كل بضع ساعات حتى مع عدد قليل من الزوار، مما أدى إلى تعطل البحث واختفاء المنتجات ومشاكل أخرى تؤثر على عمل الموظفين في لوحة ماجنتو.
2. استنزاف الموارد
المتجر كان يستهلك 3.9GB من أصل 4GB RAM، مع استخدام CPU بنسبة 85٪ تقريباً، وهو ما جعل الاستضافة غير مستقرة وظهور متكرر لرسائل خطأ مثل 524 و 500 internal server error.
3. الخدمات مثبتة بدون إعداد صحيح
الفريق التقني السابق ثبّت Elasticsearch وRedis وMariaDB بدون ضبط يتناسب مع متطلبات Magento 2، مما تسبب في مشاكل الأداء.
4. مقترح مكلف بدون فائدة أو حلول جذرية
الاقتراح الوحيد من الفريق التقني السابق الذي عمل معه العميل كان ترقية السيرفر إلى t3.large أو t3.xlarge مما يعني زيادة التكلفة الشهرية للضعف دون ضمان حل المشاكل.
الحل الجذري لخفض تكاليف استضافة ماجنتو
- ضبط Elasticsearch وفق قاعدة “50 ٪ Heap” + تنظيف الموديولات الغير مطلوبة لـ Magento.
- خفّضنا Xms/Xmx إلى 1.8 GB (بدلاً من 4 GB) تماشياً مع توصية Elastic بألا يتجاوز حجم الـHeap نصف الذاكرة المتاحة.
- أزلنا الموديولات الافتراضية غير الضرورية لمتجر ماجنتو، مثل: (ingest-geoip، ingest-user-agent، rollup، transform، ml، monitoring…) باستخدام
elasticsearch-plugin remove <plugin>
؛ ما قلّل بصمة JVM بنحو 250 MB وقلّص زمن الـ Compiling -المعالجة-. - حدّدنا indices.query.bool.max_clause_count لتقييد الاستعلامات المكلفة، وأغلقنا الفهارس الغير مستخدمة.
- تهيئة MySQL/MariaDB بشكل صحيح
- قمنا بضبط innodb_buffer_pool_size على ≈ 2.2 GB (نحو 55 ٪ من RAM) استناداً إلى توصيات Percona Community Forum بجعلها بين 50-70 ٪ من الذاكرة الفعلية.
- قمنا بتعطيل query_cache لتقليل إستهلاك الذاكرة، وفعلنا slow_query_log بحدّ 2 ثانية من أجل فحص إستعلامات SQL للعمل على تحسينها.
- قمنا بتحسين كتابة الإستعلامات الموجودة في بعض الموديولات المستخدمة في المتجر مثل Webkul_Marketplace.
- تحسينات إضافية
- أوقفنا Transparent Huge Pages وخفّضنا vm.swappiness إلى 10 للحدّ من التبديل (swapping).
- دمجنا مراقبة New Relic لتنبيه فوري لفريقنا التقني عندما يتم إستهلاك 70 ٪ أو أكثر من أي Resource تابع للسيرفر.
- خطة عمل مرنة (Quick Fix + Flex Hours)
- خلال أول 24 ساعة أصلحنا الأعطال العاجلة وضبطنا JVM عبر دعم تذاكر من نوع Quick Fix.
- استخدمنا 8 ساعات من نوع Flex Hours لمراجعة الفهارس وضبط قاعدة البيانات.
بتنفيذ هذه الحلول فقط قمنا بخفض تكاليف استضافة ماجنتو وتوفير قدره 52% من الفاتورة التي يدفعها العميل شهرياً.
النتيجة بالأرقام
المؤشر | قبل الضبط | بعد الضبط |
---|---|---|
حجم السيرفر | t3.large | t3.medium |
متوسط CPU (ذروة) | 85 ٪ | 41 ٪ |
استهلاك RAM | 3.9 GB | 1.8 GB |
تكلفة الساعة على AWS | 0.0832 $ | 0.0416 $ |
توقّف Elasticsearch أسبوعياً | 14 مرة | 0 |
النتيجة النهائية: خفض تكاليف استضافة ماجنتو بأكثر من 52٪ مع تحسين استقرار المتجر وزيادة سرعته.
ما هو المكسب التجاري لك؟
- توفير فوري في الميزانية: تخفيض إستهلاك الموارد إلى النصف يعني توفير تكلفة السيرفر إلى النصف وتجنب زيادة حجم السيرفر بدون سبب منطقي!
- استقرار أعلى = مبيعات أكثر: عدم توقف المتجر وعمليات الشراء يعني عدم فقدان عملاءك!
- جاهزية للتوسّع الموسمي: بفضل البنية السليمة «Infrastructure as Code» يمكن رفع الموارد بشكل مؤقت في المواسم ثم العودة تلقائياً إلى حجم السيرفر المعتمد.
خطوات قابلة للتطبيق في متجرك
- اضبط Heap عند ≤ 50 ٪ من RAM وثبّت Xms = Xmx.
- قم بحذف الموديولات الافتراضية غير المستخدمة في Elasticsearch قبل التفكير بترقية السيرفر.
- اضبط innodb_buffer_pool_size بين 50-60 ٪ من RAM واترك نظام التشغيل يحتفظ بالباقي للـFile System Cache.
- راقب Slow Queries بانتظام وحسنها، خصوصاً عند إضافة موديولات جديدة لمتجر ماجنتو الخاص بك.
الأسئلة الشائعة (FAQ)
كيف يمكن خفض تكاليف استضافة ماجنتو بدون ترقية السيرفر؟
يمكن ذلك عبر تحسين إعدادات الخدمات الأساسية مثل Elasticsearch وMySQL/MariaDB، وضبط الذاكرة والمعالج بما يتناسب مع موارد السيرفر المتاحة بدلاً من شراء موارد إضافية.
ما هي أفضل إعدادات Elasticsearch لمتاجر ماجنتو؟
القاعدة الذهبية هي أن يكون حجم Heap ≤ 50% من RAM مع إزالة الموديولات الافتراضية غير الضرورية وضبط الاستعلامات المكلفة.
هل يؤثر ضبط MySQL/MariaDB على سرعة متجر ماجنتو؟
نعم، تحسين إعدادات MySQL مثل innodb_buffer_pool_size وتفعيل slow_query_log يقلل من استهلاك الموارد ويزيد سرعة معالجة الطلبات.
ما الفرق بين ترقية السيرفر وتحسين إعداداته؟
ترقية السيرفر تزيد التكلفة مباشرة دون ضمان حل المشاكل. بينما تحسين الإعدادات يوفر المال ويحل السبب الجذري لمشاكل الأداء.
كيف أعرف أن متجري يستهلك موارد أكثر من اللازم؟
يمكن ملاحظة ذلك من خلال: بطء في تحميل الصفحات، توقف Elasticsearch، أو استهلاك RAM وCPU بشكل مستمر فوق 80%.
والآن… هل ترغب أن تجعل متجر الماجنتو الخاص بك يعمل بلا توقف أو مشكلات تقنية؟
جرب خدمات الدعم الفني الاستثنائية التي نقدمها في قروسيرا. [تصفح أسعار وباقات الدعم الفني]