توقف مؤقت في الموقع

CSC-SY.net
نشره همام في الجمعة, 06/11/2009 - 1:33ص

نعتذر عن التوقف المؤقت الذي حصل في موقع CSC-SY.Net اليوم 05/11/2009 والذي دام لعدة ساعات.

والذي كان سببه مشكلة في الاتصال مع مخدم قواعد البيانات المسؤول عن الموقع.

وقد تم تجاوز المشكلة ونعمل على عدم تكررها مرة اخرى ان شاء الله.


خيارات عرض التعليق

اختر الطريقة التي تفضلها لعرض التعليقات، ثم اضغط على "احفظ الإعدادات" لتفعل التغيرات.

اتيحت لي فرصة

اتيحت لي فرصة استخدام وصلة عالية السرعة, فوضعت مجموعة أهداف منها إنزال صفحات الموقع بدون صور أو ملفات. لم يخطر ببالي أن يتسبب ذلك بأي أذى. قمت بكتابة بريمج بلغة الـ Java, الصيغة الأولى لا تعتمد على threads و تقوم بانزال الصفحات على التسلسل, استخدمتها لإنزال أول ثلاثة آلاف صفحة. بعد ذلك ببضعة أيام و بعد تفحص النتيجة قررت المتابعة و تطوير الآلية نحو إنزال تفرعي للصفحات و لم أطلب أكثر من 10 صفحات على التفرع و ذلك لإنزال 7000 صفحة تقريبا. الأمر تم في دقائق معدودة.
لمتابعة الأمر ضمن أدوات موقعكم جميع الصفحات تم طلبها وفق:

sURL = "http://www.csc-sy.net/node/"+iNum+"?comments_per_page=3000&page=1";

لست متأكدا أن ما قمت به تسبب بالعطل, و أرجو أن لا يكون, و لكن بينما كنت أقوم بتفحص الصفحات شاهدت بعض الصفحات معنونة بـ Unable to connect to database server. إلا أنها لم تكن من ضمن آخر الصفحات المطلوبة, مما يمنعني من التأكد. و بعض الصفحات لم يتم انزالها و أعادت Error Code 43 و التي أظنها لصفحات لا يملك الجميع صلاحية مشاهدتها و بعض الطلبات أعادت الخطأ File not found و هي فعليا موجودة و متاحة للجميع. عموما إن كنت السبب فأرجو أن تقبلوا اعتذري.

أتمنى أن أتمكن من الحصول على الصفحات المفقودة و لكن سانتظر حتى يتم التأكد من سبب المشكلة, آمل منكم بعض الشرح, لا أتوقع أن يتسبب تنزيل 7000 صفحة بأي عطل, لأنه يكافئ تصفح 700 شخص لـ 10 صفحات.

أتوقع أن ذلك

أتوقع أن ذلك يفسر ما حدث ! لأن المشكلة كانت عائدة لكثرة الاتصالات بمخدم قواعد المعطيات ، وفي حال كان هذا هو السبب يكون تحليلي كالتالي:
اتصال 700 شخص لـ 10 صفحات هو أمر نادر الحدوث و ان حدث سيكون هناك تقاطع كبير في المحتوى المطلوب من الزائرين عندها سيكون الاعتماد على الذاكرة المخبئية (Cache) التي عادة ما تقوم نظم ادارة المحتوى مثل(Drupal المستخدم في الموقع) بتحقيقها لتقليل الاتصال الى مخدم قواعد المعطيات قدر الإمكان .
و عند طلب 7000 صفحة مختلفة كلياً ستتطلب كل صفحة استعادة من قواعد المعطيات بعد عملية فشل (miss) من الـ (Cache) خاصة و أن الخيارات المحددة في العنوان (عدد التعليقات مثلاً) ليست افتراضية (أدنى فرصة لكون المحتوى موجود في Cache) .
أضف الى ذلك كون مخدم قواعد المعطيات هو نفسه مخدم الويب و بالتالي أصبح الحمل زائدا على المخدم نفسه بشكل أكبر مع كون الموارد محدودة.
بالنهاية ما سيحسم الأمر هو وقت البداية بالنسبة لـ (هجوم DoS غير المقصود من قبلك Smile ) و ووقت الخروج عن الخدمة من ملفات الأحداث في المخدم والمقارنة بينهما.
هذا ما أظنه من خلال رؤيتي لمعلومات رسالة الخطأ التي ظهرت خلال توقف الموقع .

شكرا ThelastCode في

شكرا ThelastCode في آي لحظة كان في ١٠ طلبات من جهتي فقط, مثالي كان خاطئ ، و الصحيح ١٠ أشخاص لـ ٧٠٠ صفحة. هل هذا ممكن أن يسبب نفس المشكلة؟

المشكلة كانت

المشكلة كانت انو في أحد الجداول (جدول الـcache بالحقيقة Smile ) ضمن قاعدة البيانات معطوب!

وهالشي تسبب بانو نظام دروبال (أو يمكن هالشي من الـphp نفسها) يفتح عدة اتصالات بقاعدة البيانات (لما عم تعلق التعليمة عم يفتح اتصال جديد ويحاول ينفذ نفس التعليمة) ويوصل للعدد الأقصى للاتصالات المتاحة (المحددة من قبل مزود الخدمة).

مابعرف اذا عدد الطلبات الزائد هو تسبب بالمشكلة. طبعاً نظرياً يفترض ماتصير هيك مشكلة أبداً. يعني العطل من عند مزود الخدمة (الـ web host)

وماقدرنا نصلح الجدول (أي محاولة للوصل للجدول بتعلق) اضطرينا نعمل drop للجدول ونرجع ننشئ واحد جديد (بالحقيقة همام يلي اشتغل هالشي Smile )

على كل حال انتظر شوي لحتى نتأكد انو همام عمل check لكل قاعدة البيانات. بعدين بتقدر تنزل الموقع كله Smile
يفترض مايصير أي مشكلة واذا صار مابكون الحق عليك (بكون على الـweb host)

تنويه : كنت

تنويه : كنت أحاول تفسير مشكلة جدول الـ Cache لعلمي أن المشكلة الرئيسية كانت منه (من حديثي مع همام مسبقاٌ ) و لم أحزر ذلك صدفةً Wink

صورة agent47

عطل طبيعي بيصير

عطل طبيعي بيصير باي موقع
طبيعي اي سيرفر يفصل احيانا

عملت تفحص

عملت تفحص لقاعدة البيانات ويفترض كل شي تمام.
فيك ترجع تحاول تنزل الموقع.

شكرا فؤاد

شكرا فؤاد

صورة منهالي

سلاااااااااااا

سلااااااااااااااااامات

والحمد الان شغال الموقع وعين الله عليه

وانشالله ما بتكرر هالامر

هلأ مشان كون

هلأ مشان كون شوي دقيق..

الحقيقة ما كان في عطل بأي جدول بالداتا بيس -بالنسبة للجداول يلي عملتلهم فحص-.

الفكرة انو الهوستينغ ما كان بيسمح لأكثر من 30 اتصال مع قاعدة البيانات بالنسبة للشخص الواحد - database user -

هلأ عمل 10 طلبات فرعية مختلفة مع الموقع ممكن يؤدي لوجود أكتر من 30 اتصال مع قاعدة البيانات بسبب كون معدل الطلبات اقصر من فترة انهاء الاتصال مع قاعدة البيانات.

بالنهاية السبب الرئيسي لتوقف الموقع هو وجود اتصال sql command معلق لسبب ما وعامل lock للجدول الخاص بالكاش وبالتالي أي تعليمة تانية بتحاول نضيف على هالجدول بدها تنتظر لحتى تخلص هالتعليمة (يلي هي معلقة بالأساس) ويلي خلا عدد الاتصالات يوصل للحد المسموح فيه ويتجاوزه.
عمليا وقتها ما قدرت اعمل drop او truncate او حتى select من هدا الجدول ومشي الحال بعد ما دخلت بهدا اليوزر على قاعدة البيانات ووقفت هالاتصال المعلق.

لحد هلأ ما عرفت ليش كان هالاتصال معلق ويلي بين معي انو كانت تعليمة Insert عادية.. فشكلها كانت تحشيشة دروبال مع Mysql Smile

على كل هالمشاكل يفترص ما تتكرر بعد ما ننتقل لدروبال الجديد ان شاء الله.

كتب همام: على كل

كتب همام:

على كل هالمشاكل يفترص ما تتكرر بعد ما ننتقل لدروبال الجديد ان شاء الله.

إيمتى بالسلامة Smile

صورة منهالي

كتب en.karam1989:كتب

كتب en.karam1989:
كتب همام:
على كل هالمشاكل يفترص ما تتكرر بعد ما ننتقل لدروبال الجديد ان شاء الله.
إيمتى بالسلامة Smile

  me too