ما هى العوامل التى تستهلك اتصالات قاعدة البيانات في XenForo؟
المشاهدات:
15
الردود:
2
Abo-Karim
Administrator
معلومات Abo-Karim
- رقم العضوية
- 1
- تاريخ التسجيل
- 2015-06-22
- الإقامة
- ام الدنيــ EGYPT ــا
- الموقع الالكتروني
- هيلبرنت
- آخر نشاط
- المشاركات
- 4,972
- المعدل اليومي
- 1.21
- مستوى التفاعل
- 189
- قوة السمعه
أوسمة العضو
عند ظهور مشكلة في أداء منتدى XenForo، غالبًا ما يكون التركيز على عدد الاتصالات بقاعدة البيانات، لكن الأهم من الرقم نفسه هو معرفة ما الذي يقوم بهذه الاتصالات، وما الاستعلامات التي يتم تنفيذها، وكم من الوقت تستغرق. و في هذا المقال نستعرض أهم العمليات داخل XenForo التي يمكن أن تتعامل مع قاعدة البيانات، وكيف يمكن الوصول إلى السبب الحقيقي وراء بطء MySQL أو وجود اتصالات تستمر لفترة أطول من الطبيعي.
لذلك فإن تحميل الصفحات بشكل متكرر من الزوار أو العناكب يمكن أن يؤدي إلى تنفيذ عدد كبير من استعلامات MySQL خلال فترة قصيرة، خصوصًا في المنتديات التي تحتوي على عدد كبير من المواضيع والمشاركات.
ولهذا يمكن أن يكون هناك فرق واضح بين منتدى يعمل بقالب وإضافات بسيطة، ومنتدى يحتوي على العديد من العناصر الديناميكية التي يتم تحميلها في الصفحة الرئيسية.
كما أن بعض وظائف XenForo تعتمد على بيانات الجلسة لمعرفة حالة المستخدم وما يستطيع الوصول إليه، وبالتالي فإن عمليات إدارة الجلسات جزء طبيعي من عمل المنتدى.
قد يحتاج XenForo إلى تحديث بيانات أخرى مرتبطة بالموضوع والقسم والعضو والعدادات، بالإضافة إلى تنفيذ عمليات مرتبطة بالإشعارات أو الصلاحيات أو الإضافات التي تتفاعل مع عملية إنشاء المحتوى.
فبحسب إعدادات البحث وحجم البيانات وطريقة الفهرسة، يمكن أن تكون عمليات البحث أكثر استهلاكًا للموارد من بعض طلبات الصفحات العادية.
إذا كان هناك بطء واضح أثناء استخدام البحث، فمن المفيد فحص الاستعلامات التي يتم تنفيذها ومعرفة الوقت الذي تستغرقه، بدل افتراض أن المشكلة من XenForo نفسه.
وقد تظهر هذه العمليات أثناء تحميل صفحات المنتدى أو عند تنفيذ طلبات AJAX في الخلفية، لذلك قد تكون هناك استعلامات لا يلاحظها المستخدم بشكل مباشر أثناء تصفحه للمنتدى.
كل طلب يصل إلى صفحة ديناميكية في XenForo قد يؤدي إلى تشغيل PHP وتنفيذ استعلامات على قاعدة البيانات، وبالتالي فإن نشاط العناكب يعتبر أحد الأمور التي تستحق المراقبة عند التحقيق في ضغط الخادم.
إذا لاحظت ارتفاعًا في الطلبات من العناكب بالتزامن مع ارتفاع استهلاك MySQL أو PHP، فمن المفيد مقارنة هذه البيانات مع سجلات الخادم لمعرفة حجم الزحف وتأثيره الفعلي.
هذه المهام قد تعمل دون أن يكون هناك مستخدم يتصفح صفحة أمامك، ولذلك من المهم عدم حصر البحث عن سبب الضغط في زيارات الأعضاء فقط.
فالإضافة التي تنفذ استعلامات كثيرة أو تستغرق وقتًا طويلًا يمكن أن تؤثر على أداء المنتدى، خصوصًا إذا كانت الوظيفة التي تقوم بها الإضافة يتم تنفيذها بشكل متكرر.
وهنا لا يكفي تعطيل الإضافات عشوائيًا؛ الأفضل معرفة الاستعلامات التي يتم تنفيذها وربطها بالطلبات أو الوظائف التي تقوم بها الإضافة.
حتى الإضافة الرسمية الخاصة بتحويل روابط vBulletin قد تنفذ استعلامات عند التعامل مع طلبات معينة، بحسب طريقة إعداد المنتدى والروابط التي يتم طلبها.
هذه الطلبات قد تصل إلى PHP وتقوم بقراءة أو تحديث بيانات في قاعدة البيانات، رغم أن المستخدم لا يرى صفحة جديدة يتم تحميلها أمامه.
لذلك عند تحليل نشاط المنتدى، من المهم احتساب طلبات AJAX ضمن العمليات التي قد تتعامل مع MySQL.
وبحسب طبيعة التكامل، قد تحتاج هذه العمليات إلى قراءة بيانات من قاعدة البيانات أو تحديثها، وبالتالي يمكن أن تظهر ضمن نشاط MySQL أثناء مراقبة الخادم.
وجود عملية تحتاج إلى قاعدة البيانات لا يعني بالضرورة أنها تفتح اتصالًا دائمًا ومستقلًا يبقى موجودًا طوال الوقت.
عادةً يقوم طلب PHP باستخدام اتصال بقاعدة البيانات أثناء تنفيذ الطلب والاستعلامات المطلوبة، وبعد انتهاء العملية يتم إغلاق الاتصال أو إعادته إلى إدارة الاتصالات، وذلك حسب إعدادات PHP وطريقة تشغيل الخادم ونظام إدارة الاتصالات المستخدم.
لذلك لا يمكن معرفة سبب المشكلة بمجرد النظر إلى عدد الاتصالات فقط.
من المفيد فحص حالة الاتصال، مثل Query أو Sleep، ومعرفة مدة بقاء الاتصال، والاستعلام الذي يتم تنفيذه، وقاعدة البيانات المستخدمة، والوقت الذي استغرقه الاستعلام.
بهذه المعلومات يمكن التمييز بين الاتصالات الطبيعية التي تنتهي بسرعة وبين الاتصالات التي قد تكون مرتبطة باستعلام بطيء أو عملية عالقة.
لذلك عند ظهور مشكلة في MySQL أو بطء في المنتدى، الأفضل عدم التركيز على الاتصالات كرقم فقط، وإنما البحث عن مصدر الاتصال والاستعلام الذي ينفذه والمدة التي يستغرقها.
هذه الطريقة تعطي صورة أوضح بكثير عن المشكلة، وتساعد على تحديد ما إذا كان السبب استعلامًا بطيئًا، إضافة معينة، مهمة خلفية، نشاطًا مرتفعًا من العناكب، أو إعدادًا يحتاج إلى مراجعة في PHP أو MySQL.
تحميل المواضيع والمشاركات
عند فتح موضوع في XenForo، يحتاج النظام إلى قراءة مجموعة من البيانات من قاعدة البيانات، مثل بيانات الموضوع والمشاركات والمستخدمين والصلاحيات وغيرها من المعلومات اللازمة لعرض الصفحة.لذلك فإن تحميل الصفحات بشكل متكرر من الزوار أو العناكب يمكن أن يؤدي إلى تنفيذ عدد كبير من استعلامات MySQL خلال فترة قصيرة، خصوصًا في المنتديات التي تحتوي على عدد كبير من المواضيع والمشاركات.
الصفحة الرئيسية والأقسام
الصفحة الرئيسية لا تعرض مجرد محتوى ثابت، وإنما تحتاج إلى جلب معلومات مختلفة من قاعدة البيانات، مثل الأقسام والمواضيع الحديثة وآخر المشاركات والإحصائيات وبعض البيانات الأخرى حسب إعدادات المنتدى والقالب والإضافات المستخدمة.ولهذا يمكن أن يكون هناك فرق واضح بين منتدى يعمل بقالب وإضافات بسيطة، ومنتدى يحتوي على العديد من العناصر الديناميكية التي يتم تحميلها في الصفحة الرئيسية.
تسجيل الدخول والجلسات
عمليات تسجيل الدخول وإدارة الجلسات تحتاج إلى قراءة وتحديث بيانات مرتبطة بالمستخدم، مثل معلومات الحساب والصلاحيات والجلسة الحالية.كما أن بعض وظائف XenForo تعتمد على بيانات الجلسة لمعرفة حالة المستخدم وما يستطيع الوصول إليه، وبالتالي فإن عمليات إدارة الجلسات جزء طبيعي من عمل المنتدى.
إنشاء المواضيع والمشاركات
عند قيام العضو بكتابة موضوع أو مشاركة جديدة، لا يقتصر الأمر على إضافة النص إلى قاعدة البيانات فقط.قد يحتاج XenForo إلى تحديث بيانات أخرى مرتبطة بالموضوع والقسم والعضو والعدادات، بالإضافة إلى تنفيذ عمليات مرتبطة بالإشعارات أو الصلاحيات أو الإضافات التي تتفاعل مع عملية إنشاء المحتوى.
البحث داخل XenForo
البحث من العمليات التي تستحق اهتمامًا خاصًا، خصوصًا في المنتديات الكبيرة.فبحسب إعدادات البحث وحجم البيانات وطريقة الفهرسة، يمكن أن تكون عمليات البحث أكثر استهلاكًا للموارد من بعض طلبات الصفحات العادية.
إذا كان هناك بطء واضح أثناء استخدام البحث، فمن المفيد فحص الاستعلامات التي يتم تنفيذها ومعرفة الوقت الذي تستغرقه، بدل افتراض أن المشكلة من XenForo نفسه.
الإشعارات والرسائل الخاصة
الإشعارات والرسائل الخاصة تعتمد أيضًا على قاعدة البيانات لقراءة البيانات المرتبطة بحساب المستخدم.وقد تظهر هذه العمليات أثناء تحميل صفحات المنتدى أو عند تنفيذ طلبات AJAX في الخلفية، لذلك قد تكون هناك استعلامات لا يلاحظها المستخدم بشكل مباشر أثناء تصفحه للمنتدى.
العناكب ومحركات البحث
محركات البحث مثل Google وBing يمكن أن ترسل عددًا كبيرًا من الطلبات إلى المنتدى أثناء عملية الزحف.كل طلب يصل إلى صفحة ديناميكية في XenForo قد يؤدي إلى تشغيل PHP وتنفيذ استعلامات على قاعدة البيانات، وبالتالي فإن نشاط العناكب يعتبر أحد الأمور التي تستحق المراقبة عند التحقيق في ضغط الخادم.
إذا لاحظت ارتفاعًا في الطلبات من العناكب بالتزامن مع ارتفاع استهلاك MySQL أو PHP، فمن المفيد مقارنة هذه البيانات مع سجلات الخادم لمعرفة حجم الزحف وتأثيره الفعلي.
مهام XenForo الخلفية Jobs و Cron
XenForo يحتوي على مجموعة من المهام التي تعمل في الخلفية، وقد تتضمن تحديث الإحصائيات والعدادات، معالجة بعض البيانات، عمليات التنظيف، الترقيات، وإنشاء Sitemap وغيرها.هذه المهام قد تعمل دون أن يكون هناك مستخدم يتصفح صفحة أمامك، ولذلك من المهم عدم حصر البحث عن سبب الضغط في زيارات الأعضاء فقط.
الإضافات وتأثيرها على قاعدة البيانات
الإضافات يمكن أن تضيف استعلامات خاصة بها إلى طلبات XenForo.فالإضافة التي تنفذ استعلامات كثيرة أو تستغرق وقتًا طويلًا يمكن أن تؤثر على أداء المنتدى، خصوصًا إذا كانت الوظيفة التي تقوم بها الإضافة يتم تنفيذها بشكل متكرر.
وهنا لا يكفي تعطيل الإضافات عشوائيًا؛ الأفضل معرفة الاستعلامات التي يتم تنفيذها وربطها بالطلبات أو الوظائف التي تقوم بها الإضافة.
حتى الإضافة الرسمية الخاصة بتحويل روابط vBulletin قد تنفذ استعلامات عند التعامل مع طلبات معينة، بحسب طريقة إعداد المنتدى والروابط التي يتم طلبها.
طلبات AJAX التي تعمل في الخلفية
بعض وظائف XenForo لا تحتاج إلى إعادة تحميل الصفحة بالكامل، وإنما تستخدم AJAX لإرسال طلبات إلى الخادم.هذه الطلبات قد تصل إلى PHP وتقوم بقراءة أو تحديث بيانات في قاعدة البيانات، رغم أن المستخدم لا يرى صفحة جديدة يتم تحميلها أمامه.
لذلك عند تحليل نشاط المنتدى، من المهم احتساب طلبات AJAX ضمن العمليات التي قد تتعامل مع MySQL.
API والخدمات الخارجية
إذا كان المنتدى مرتبطًا بخدمات خارجية أو يستخدم API، فقد توجد عمليات إضافية يتم تنفيذها عند وصول هذه الطلبات.وبحسب طبيعة التكامل، قد تحتاج هذه العمليات إلى قراءة بيانات من قاعدة البيانات أو تحديثها، وبالتالي يمكن أن تظهر ضمن نشاط MySQL أثناء مراقبة الخادم.
هل كل عملية تعني اتصالًا مستقلًا؟
هذه نقطة مهمة جدًا.وجود عملية تحتاج إلى قاعدة البيانات لا يعني بالضرورة أنها تفتح اتصالًا دائمًا ومستقلًا يبقى موجودًا طوال الوقت.
عادةً يقوم طلب PHP باستخدام اتصال بقاعدة البيانات أثناء تنفيذ الطلب والاستعلامات المطلوبة، وبعد انتهاء العملية يتم إغلاق الاتصال أو إعادته إلى إدارة الاتصالات، وذلك حسب إعدادات PHP وطريقة تشغيل الخادم ونظام إدارة الاتصالات المستخدم.
لذلك لا يمكن معرفة سبب المشكلة بمجرد النظر إلى عدد الاتصالات فقط.
كيف نعرف سبب المشكلة فعليًا؟
إذا كان هناك بطء في XenForo أو ضغط على MySQL، فالمعلومة الأهم هي معرفة ماذا تفعل الاتصالات في تلك اللحظة.من المفيد فحص حالة الاتصال، مثل Query أو Sleep، ومعرفة مدة بقاء الاتصال، والاستعلام الذي يتم تنفيذه، وقاعدة البيانات المستخدمة، والوقت الذي استغرقه الاستعلام.
بهذه المعلومات يمكن التمييز بين الاتصالات الطبيعية التي تنتهي بسرعة وبين الاتصالات التي قد تكون مرتبطة باستعلام بطيء أو عملية عالقة.
الخلاصة
قاعدة بيانات XenForo تتعامل مع الكثير من العمليات اليومية، بدايةً من تحميل المواضيع والصفحة الرئيسية، مرورًا بتسجيل الدخول والبحث والمشاركات، ووصولًا إلى العناكب والإضافات وطلبات AJAX والمهام الخلفية.لذلك عند ظهور مشكلة في MySQL أو بطء في المنتدى، الأفضل عدم التركيز على الاتصالات كرقم فقط، وإنما البحث عن مصدر الاتصال والاستعلام الذي ينفذه والمدة التي يستغرقها.
هذه الطريقة تعطي صورة أوضح بكثير عن المشكلة، وتساعد على تحديد ما إذا كان السبب استعلامًا بطيئًا، إضافة معينة، مهمة خلفية، نشاطًا مرتفعًا من العناكب، أو إعدادًا يحتاج إلى مراجعة في PHP أو MySQL.