Diablo 2 Resurrected: Blizzard تعتذر عن الخوادم وتوضح موقفها

أهلا بالجميع.

منذ إطلاق Diablo II: Resurrected، واجهنا مشكلات متعددة في الخادم، وأردنا تقديم بعض الشفافية حول سبب هذه المشكلات والخطوات التي اتخذناها حتى الآن لمعالجتها. نريد أيضًا أن نقدم لك نظرة ثاقبة حول كيفية المضي قدمًا.

tl;dr: لم يكن انقطاع الخادم لدينا بسبب مشكلة فردية؛ نحن نعمل على حل كل مشكلة فور ظهورها، من خلال الحلول المخففة والتغييرات الهيكلية طويلة المدى. لقد عانى عدد قليل من اللاعبين من فقدان تقدم الشخصية - ومن الآن فصاعدًا، يجب أن تقتصر أي خسارة بسبب تعطل الخادم على عدة دقائق. هذا ليس حلاً كاملاً بالنسبة لنا، ونحن مستمرون في العمل على هذه المشكلة. يعمل فريقنا، بمساعدة الآخرين في Blizzard، على جلب تجربة اللعبة إلى مكان يشعر فيه الجميع بالرضا.

سنتعمق قليلاً هنا مع بعض التفاصيل الهندسية، ولكننا نأمل أن يساعدك هذا بشكل عام على فهم سبب حدوث هذه الانقطاعات وما كنا نفعله لمعالجة كل حالة، وكذلك كيف قمنا بذلك نحن نحقق في السبب الجذري العام. لنبدأ في البداية.

مشكلة (مشاكل) السيرفرات:

قبل أن نتحدث عن المشكلات، سنقدم لك باختصار بعض السياق حول كيفية عمل قواعد بيانات الخادم لدينا. أولاً، هناك قاعدة البيانات العالمية الخاصة بنا، والتي توجد كمصدر وحيد للحقيقة لجميع معلومات شخصيتك وتقدمك. كما يمكنك أن تتخيل، هذه مهمة كبيرة لقاعدة بيانات واحدة، ولن تتمكن من التعامل معها بمفردها. لذا، ولتخفيف العبء ووقت الاستجابة على قاعدة البيانات العالمية الخاصة بنا، فإن كل منطقة - أمريكا الشمالية والاتحاد الأوروبي وآسيا - لديها قواعد بيانات فردية تقوم أيضًا بتخزين معلومات شخصيتك وتقدمها، وستكتب قاعدة البيانات الخاصة بمنطقتك بشكل دوري إلى قاعدة البيانات العالمية. يتم تنفيذ معظم إجراءاتك داخل اللعبة على قاعدة البيانات الإقليمية هذه لأنها أسرع، وشخصيتك "مقفلة" هناك للحفاظ على سلامة سجل الشخصية الفردية. تحتوي قاعدة البيانات العالمية أيضًا على نسخة احتياطية في حالة فشل القاعدة الرئيسية.

مع أخذ ذلك في الاعتبار، ولشرح ما يحدث، سنركز على فترات التوقف التي حدثت بين يوم السبت 9 أكتوبر وحتى الآن.

في صباح يوم السبت بتوقيت المحيط الهادئ، عانينا من انقطاع عالمي بسبب الارتفاع المفاجئ والكبير في حركة المرور. وكانت هذه عتبة جديدة لم تشهدها خوادمنا على الإطلاق، ولا حتى عند الإطلاق. وقد تفاقم هذا الأمر بسبب التحديث الذي قمنا بطرحه في اليوم السابق والذي يهدف إلى تحسين الأداء فيما يتعلق بإنشاء اللعبة - وقد أدى هذان العاملان مجتمعان إلى زيادة التحميل على قاعدة بياناتنا العالمية، مما أدى إلى انتهاء المهلة. قررنا التراجع عن تحديث يوم الجمعة الذي قمنا بنشره مسبقًا، على أمل أن يؤدي ذلك إلى تخفيف العبء على الخوادم التي سبقت يوم الأحد بينما يمنحنا أيضًا مساحة لإجراء تحقيق أعمق في السبب الجذري.

ومع ذلك، أصبح من الواضح يوم الأحد أن ما فعلناه يوم السبت لم يكن كافيًا، فقد شهدنا زيادة أكبر في حركة المرور، مما تسبب في انقطاع الخدمة مرة أخرى. لاحظت خوادم الألعاب الخاصة بنا قطع الاتصال بقاعدة البيانات وحاولت على الفور إعادة الاتصال، بشكل متكرر، مما يعني أن قاعدة البيانات لم يكن لديها الوقت الكافي لمتابعة العمل الذي أكملناه لأنها كانت مشغولة للغاية في التعامل مع تدفق مستمر من محاولات الاتصال بواسطة خوادم الألعاب. خلال هذا الوقت، رأينا أيضًا أنه يمكننا إجراء تحسينات على التكوين على تسجيل أحداث قاعدة البيانات لدينا، وهو أمر ضروري لاستعادة الحالة السليمة في حالة فشل قاعدة البيانات، لذلك أكملنا تلك التحسينات، وأجرينا المزيد من تحليل السبب الجذري.

كان السيف ذو الحدين لانقطاع التيار الكهربائي يوم الأحد هو أنه بسبب ما تعاملنا معه يوم السبت، قمنا بإنشاء ما كان في الأساس دليلًا حول كيفية التعافي منه بسرعة. الذي كان جيدا.

ولكن لأننا عدنا إلى الإنترنت مرة أخرى بسرعة كبيرة في ذروة نشاط اللاعبين، مع مئات الآلاف من المباريات في غضون عشرات الدقائق، فقد سقطنا مرة أخرى. الذي كان سيئا.

لذلك كان لدينا العديد من الإصلاحات لنشرها، بما في ذلك تحسينات التكوين والتعليمات البرمجية، والتي قمنا بنشرها في قاعدة البيانات العالمية الاحتياطية. وهذا يقودنا إلى يوم الاثنين 11 أكتوبر، عندما قمنا بالتبديل بين قواعد البيانات العالمية. أدى هذا إلى انقطاع آخر، عندما كانت قاعدة بيانات النسخ الاحتياطي الخاصة بنا تستمر عن طريق الخطأ في تشغيل عملية النسخ الاحتياطي الخاصة بها، مما يعني أنها قضت معظم وقتها في محاولة النسخ من قاعدة البيانات الأخرى عندما كان من المفترض أن تخدم الطلبات من الخوادم. خلال هذا الوقت، اكتشفنا المزيد من المشكلات، وقمنا بإجراء المزيد من التحسينات - لقد وجدنا استعلامًا تم إهماله منذ ذلك الحين ولكنه مرهق يمكننا إزالته بالكامل من قاعدة البيانات، وقمنا بتحسين عمليات التحقق من الأهلية للاعبين عند انضمامهم إلى لعبة، مما أدى إلى تخفيف العبء بشكل أكبر ، ولدينا المزيد من التحسينات في الأداء في الاختبار أثناء حديثنا. ونعتقد أيضًا أننا أصلحنا عواصف إعادة الاتصال بقاعدة البيانات التي شهدناها، لأننا لم نر حدوث ذلك يوم الثلاثاء.

ثم يوم الثلاثاء، وصلنا إلى مستوى عالٍ آخر للاعب متزامن، مع بضع مئات الآلاف من اللاعبين في منطقة واحدة فقط. وهذا ما جعلنا نتعرض لحادث آخر يتعلق بأداء قاعدة البيانات المتدهور، والذي يتم حاليًا العمل على سببه من قبل مهندسي قواعد البيانات لدينا. لقد تواصلنا أيضًا مع مهندسين آخرين في Blizzard للعمل على إصلاحات أصغر حيث ركز فريقنا على مشكلات الخادم الأساسية، وتواصلنا مع شركائنا الخارجيين للحصول على المساعدة أيضًا.

لماذا يحدث هذا:

من أجل الحفاظ على وفائنا باللعبة الأصلية، احتفظنا بالكثير من التعليمات البرمجية القديمة. ومع ذلك، هناك خدمة قديمة على وجه الخصوص تكافح من أجل مواكبة سلوك اللاعب الحديث.

تتعامل هذه الخدمة، مع بعض الترقيات من الخدمة الأصلية، مع أجزاء مهمة من وظائف اللعبة، وهي إنشاء/الانضمام إلى اللعبة، وتحديث/قراءة/تصفية قوائم الألعاب، والتحقق من صحة خادم اللعبة، وقراءة الأحرف من قاعدة البيانات لضمان قدرة شخصيتك على المشاركة في أي شيء. هو الذي تقوم بالتصفية له. الأهم من ذلك، أن هذه الخدمة فردية، مما يعني أنه لا يمكننا تشغيل سوى مثيل واحد منها لضمان رؤية جميع اللاعبين لقائمة الألعاب الأحدث والأكثر صحة في جميع الأوقات. لقد قمنا بتحسين هذه الخدمة بعدة طرق لتتوافق مع التكنولوجيا الأكثر حداثة، ولكن كما ذكرنا سابقًا، تنبع الكثير من مشكلاتنا من إنشاء اللعبة.

لقد ذكرنا "سلوك اللاعب الحديث" لأنها نقطة مثيرة للاهتمام يجب التفكير فيها. في عام 2001، لم يكن هناك محتوى على الإنترنت تقريبًا حول كيفية لعب Diablo II "بشكل صحيح" (يتم تشغيل Baal لـ XP وPindleskin/Ancient Sewers/إلخ للبحث السحري، وما إلى ذلك). ومع ذلك، اليوم، يمكن للاعب الجديد البحث عن أي عدد من منشئي المحتوى الرائعين الذين يمكنهم تعليمهم كيفية لعب اللعبة بطرق مختلفة، يتضمن الكثير منها الكثير من تحميل قاعدة البيانات في شكل إنشاء الألعاب وتحميلها وتدميرها بسرعة. خلافة. على الرغم من أننا توقعنا هذا - حيث يقوم اللاعبون بإنشاء شخصيات جديدة على خوادم جديدة، ويعملون بجد للحصول على عناصر الاكتشاف السحرية الخاصة بهم - إلا أننا قللنا إلى حد كبير من النطاق الذي استنتجناه من الاختبار التجريبي.

بالإضافة إلى ذلك، بشكل عام، كنا نقوم بالحفظ في كثير من الأحيان إلى قاعدة البيانات العالمية: ليست هناك حاجة للقيام بذلك كثيرًا كما كنا من قبل. ينبغي لنا حقًا أن نحفظك في قاعدة البيانات الإقليمية، ونحفظك في قاعدة البيانات العالمية فقط عندما نحتاج إلى تحريرك - وهذا أحد إجراءات التخفيف التي وضعناها. نقوم الآن بكتابة تعليمات برمجية لتغيير كيفية القيام بذلك بالكامل، لذلك لن نقوم تقريبًا بالحفظ في قاعدة البيانات العالمية، مما سيقلل بشكل كبير الحمل على ذلك الخادم، ولكن هذه إعادة تصميم للبنية ستستغرق بعض الوقت لإنشائها، اختبار ثم تنفيذ.

ملاحظة حول فقدان التقدم:

يرجع فقدان التقدم الذي تعرض له بعض اللاعبين إلى الطريقة التي نقوم بها بقفل الأحرف في كل من قواعد البيانات الإقليمية والعالمية - فنحن نقفل شخصيتك في قاعدة البيانات العالمية عندما يتم تعيينك لمنطقة ما (على سبيل المثال، عندما تلعب في منطقة الولايات المتحدة) ، شخصيتك مقيدة بمنطقة الولايات المتحدة، ويتم حل معظم الإجراءات في قاعدة بيانات منطقة الولايات المتحدة.)

كانت المشكلة أنه أثناء انقطاع الخادم، عندما كانت قاعدة البيانات تنهار، أصبح عدد من الأحرف عالقًا في قاعدة البيانات الإقليمية، ولم يكن لدينا أي طريقة لنقلها إلى قاعدة البيانات العالمية. في ذلك الوقت، اعتقدنا أن لدينا خيارين: إما أن نفتح قفل الجميع بالتغييرات غير المحفوظة في قاعدة البيانات العالمية، وبالتالي نفقد بعض التقدم بسبب الكتابة الفوقية التي قد تحدث في قاعدة البيانات العالمية، أو نوقف اللعبة بالكامل مقابل مبلغ غير محدد من الوقت وتشغيل برنامج نصي لكتابة البيانات الإقليمية إلى قاعدة البيانات العالمية.

في ذلك الوقت، تصرفنا بناءً على الأول: شعرنا أنه من الأهم الحفاظ على اللعبة حتى يتمكن الأشخاص من اللعب، بدلاً من إيقاف اللعبة لفترة طويلة من الوقت لاستعادة البيانات. نحن نأسف بشدة لأي لاعب فقد تقدمًا مهمًا أو عناصر قيمة. كلاعبين، نحن نعرف لسعة التراجع، ونشعر بها بعمق.

من الآن فصاعدا، نعتقد أن لدينا طريقة لاستعادة الأحرف التي لا تؤدي إلى أي فقدان كبير للبيانات - يجب أن يقتصر ذلك على عدة دقائق من الخسارة، إن وجدت، في حالة تعطل الخادم.

وهذا أفضل، لكنه لا يزال غير جيد بما فيه الكفاية في أعيننا.

ماذا نفعل حيال ذلك:

تحديد المعدل: نحن نقوم بتقييد عدد العمليات على قاعدة البيانات المتعلقة بإنشاء الألعاب والانضمام إليها، ونعلم أن الكثير منكم يشعر بهذا. على سبيل المثال، بالنسبة لأولئك منكم الذين يمارسون رياضة Pindleskin، فسوف تدخلون وتخرجون من اللعبة وتنشئون لعبة جديدة في غضون 20 ثانية. في هذه الحالة، سيتم تقييد معدلك عند نقطة معينة. عند حدوث ذلك، ستشير رسالة الخطأ إلى وجود مشكلة في الاتصال بخوادم اللعبة: هذا ليس مؤشرًا على أن خوادم الألعاب معطلة في هذه الحالة بالذات، بل يعني فقط أنه تم تقييد المعدل لتقليل التحميل مؤقتًا على قاعدة البيانات، في مصلحة الحفاظ على اللعبة قيد التشغيل. يمكننا أن نؤكد لك أن هذا مجرد تخفيف في الوقت الحالي - فنحن لا نرى هذا كحل طويل المدى.

إنشاء قائمة انتظار تسجيل الدخول: كانت نهاية الأسبوع الماضي عبارة عن سلسلة من المشكلات، وليست نفس المشكلة مرارًا وتكرارًا. نظرًا لتنشيط قاعدة اللاعبين، وإضافة منصات متعددة، والمشكلات الأخرى المرتبطة بالتوسع، قد نستمر في مواجهة مشكلات صغيرة. ولتشخيصها ومعالجتها بسرعة، نحتاج إلى التأكد من توقف "القطيعة" - أي أعداد كبيرة من اللاعبين الذين يقومون بتسجيل الدخول في وقت واحد. لمعالجة هذه المشكلة، لدينا أشخاص يعملون في قائمة انتظار تسجيل الدخول، مثلما قد تكون واجهته في World of Warcraft. سيؤدي هذا إلى إبقاء السكان عند المستوى الآمن الذي كان لدينا في ذلك الوقت، حتى نتمكن من مراقبة مكان إجهاد النظام ومعالجته قبل أن يؤدي إلى إيقاف اللعبة تمامًا. في كل مرة نصلح فيها سلالة، سنكون قادرين على زيادة الحد الأقصى لعدد السكان. لقد تم بالفعل تنفيذ قائمة انتظار تسجيل الدخول هذه جزئيًا على الواجهة الخلفية (في الوقت الحالي، يبدو أنها مصادقة فاشلة في العميل) ويجب نشرها بالكامل في الأيام القادمة على جهاز الكمبيوتر، مع وحدة التحكم التي ستتبعها بعد ذلك.

تقسيم الأجزاء المهمة من الوظائف إلى خدمات أصغر: هذا العمل قيد التنفيذ جزئيًا للأشياء التي يمكننا معالجتها في أقل من يوم (تم الانتهاء من بعضها بالفعل هذا الأسبوع) كما تم التخطيط له أيضًا لمشاريع أكبر، مثل الخدمات الصغيرة الجديدة (على سبيل المثال، خدمة GameList المسؤولة فقط عن توفير قائمة الألعاب للاعبين). بمجرد تفكيك الوظائف المهمة، يمكننا النظر في توسيع نطاق خدمات إدارة الألعاب لدينا، مما سيؤدي إلى تقليل مقدار التحميل.

لدينا أشخاص يعملون بجد لا يصدق لإدارة الحوادث في الوقت الفعلي، وتشخيص المشكلات، وتنفيذ الإصلاحات - ليس فقط في فريق D2R، ولكن عبر Blizzard. هذه اللعبة تعني الكثير لنا جميعًا. الكثير منا في الفريق هم لاعبون في D2 مدى الحياة - لقد لعبنا أثناء إطلاقه الأولي في عام 2000، وبعضهم جزء من مجتمع التعديل، وما إلى ذلك. يمكننا أن نؤكد لك أننا سنواصل العمل حتى تشعرنا تجربة اللعبة بالرضا ليس فقط كمطورين، ولكن كلاعبين وأعضاء في المجتمع بأنفسنا.

يرجى الاستمرار في إرسال تعليقاتك إلى منتدى Diablo II: Resurrected 314، والإبلاغ عن الأخطاء الخاصة بك إلى منتدى Bug Report 95، وللحصول على المساعدة في استكشاف الأخطاء وإصلاحها، قم بزيارة منتدى الدعم الفني 50. شكرًا لك على تواصلك المستمر معنا عبر جميع القنوات - إنه لا تقدر بثمن بالنسبة لنا ونحن نعمل على هذه القضايا.

سيبقيك فريق مجتمع Diablo على اطلاع دائم بالتقدم الذي أحرزناه عبر المنتديات.

ديابلو الثاني: فريق التطوير المُبعث

بيز رادارعنDiablo II: الانقطاعات المُبعثة: شرح، كيف كنا نعمل عليها، وكيف نمضي قدمًا(مصدر)