إداري DEV XyT تم نشره July 12, 2024 إداري تم نشره July 12, 2024 أعزائنا فرسان وفارسات عالم الأسرار أسعد الله مساءكم وجمعة مباركة هذا بيان لما حدث ليلة أمس. ماذا حدث؟ بسبب خطأ غير متوقع حدث بتاريخ 11/07 في تمام 00:47 بتوقيت السعودية، اضطررنا لإيقاف اللعبة بسبب كون الخلل يمس مباشرة أحد الأنظمة المركزية للخادم، والذي يشرف على حفظ وتلقي بيانات اللاعبين في ومن قواعد بيانات اللعبة. بعد بحث وتحقيق معمق، انتبهنا إلى أن المشكلة في حد ذاتها ليست بالأمر المهم، (في هذه الحالة: استغراق عملية حفظ لسجلات اللاعبين وقتا أكثر بقليل من اللازم)، وذلك لأن هذا النوع من المشاكل لا يحدث إلى بشكل نادر. ولكن هذا لفت انتباهنا إلى نقطة ضعف، وهي أن الأنظمة الأساسية للخادم، رغم أنها مصممة بحيث لا تحدث أخطاء أثناء عملها، فهي ليست منيعة، ومعرضة للسقوط بسبب أدنى خلل (خطأ برمجي، انقطاع الاتصال مع إحدى قواعد البيانات لفترة من الزمن...)، وتوقفها عن العمل يعني توقف اللعبة بأكملها. المشكلة المترتبة عن ذلك، بغض النظر عن ضرورة إعادة تشغيل الخادم، هو ضياع بيانات اللاعبين لفترة من الزمن. هذه المدة في حد ذاتها ليست طويلة (بضعة دقائق)، وليست بالإشكال الكبير. لكن النقطة الأهم هي أن عمليات الحفظ بقواعد البيانات التي تتم إثناء اشتغال الخادم لا تكون كاملة، بحيث يتم حفظ كل شخصية بشكل انفرادي، وفي أوقات مختلفة. لفهم ذلك أكثر، لنأخذ المثال التالي: لاعب أ قام بإعطاء أداة للاعب ب. تم حفظ اللاعب أ. حدثت مشكلة وتوقف الخادم عن العمل. في هذه الحالة، الخادم لم يتوقف بشكل طبيعي، وبالتالي اللاعب ب لم يتم حفظ "حصوله على الأداة"، وفي نفس الوقت، فقد تم تسجيل أن اللاعب أ قام ب"إعطاء الأداة"، مما يعني أن الأداة قد ضاعت تماما. ويمكن تطبيق ذلك على حالات أخرى (حدوث العكس يعني نسخ الأداة مثلا). بالتأكيد، الشيء الإجابي أنه يتم تسجيل العمليات من جهة ثانية، ويمكن العودة إلى هذا السجل لمعرفة ماذا ضاع وماذا أضيف. لكن هذه عملية مكلفة جدا، بحيث تحدث العديد من العمليات في الثانية الواحدة! والرجوع إليها جميعها للتحقق يدويا أمر شبه مستحيل. ناهيك على أن حفظ السجلات نفسه معرض للخطأ. الإجراءات التي تم اتخاذها لجميع هذه الأسباب، فقط تم العمل غلى إضافة 5 أنظمة مختلفة جديدة للخادم، تعمل بشكل آلي ومستقل، ولكل منها دور محدد. ويشمل ذلك: مراقبة عمل الأنظمة الرئيسية للسيرفر، وجودة الاتصال بقاعدة البيانات. في حالة حدوث خلل ما، يتم إشعار نظام ثان ليحاول إعادة تشغيل النظام أو الاتصال الحاصل به خلل، ورفع البيانات إليه مجددا. في حالة حدوث خطأ في حفظ أي معلومة بإحدى قواعد البيانات الرئيسية، فإن نظاما آخر يتولى نقلها لمركز ثان لحفظ البيانات ريثما تتم مراجعتها ودمجها بقاعدة البيانات الرئيسية. في حالة حدوث خلل في أي الأنظمة أعلاه، أو عدم مقدرتها على تدارك الخطأ، فإن نظاما آخر سيقوم بالبحث عن جميع البيانات التي لم ينبغي حفظها، وتسجيلها، ثم إيقاف الخادم بشكل تلقائي حتى لا تحدث أية خسائر أخرى أو إضافية. استغللنا الفرصة أيضا لتحديث الأساس البرمجي (Framework) المستخدم في برمجة الخادم (من .net6.0 إلى .net8.0)، لأن ذلك يسهل علينا التدخل بشكل أسهل للبحث في ذاكرة الخادم ومعرفة ماذا حدث في حالة وجود أي خلل. لقد تم العمل على صنع وتجريب هذه الأنظمة بوتيرة سريعة، بالنظر إلى عامل أن اللعبة متوقفة. لذلك فمن المحتمل، وإن كنا لا نرجو ذلك، أن تحدث أخطاء جانبية. لكننا سنعمل على تجريبها وتحسينها أكثر خلال الصيانات المقبلة، وذلك بهدف تفادي أية مشاكل من هذا النوع مستقبلا أو الحد من أثرها. --------------------------- نأتي الآن إلى مسألة الفصل الذي حدث يوم البارحة. رغم وجود رجوع زمني بحوالي 15 دقيقة للوراء. فقد تمت مراجعة وتصحيح حوالي 140 من العمليات المهمة والغير الصحيحة، أي التي لم تتم بشكل كلي (عدم الحصول على أداة رغم دفع سعرها...)، ويشمل ذلك: المتاجرات أو عمليات البيع التي تزيد قيمتها عن 20 ألف ذهبة، أو التي تشمل أدوات مميزة (من المتجر). عمليات الصناعة للأدوات المهمة، أو التي تم إنجازها بعدد كبير. مكافآت المهام التي تشمل "رمز البارون". عمليات التخزين والسحب من المستودع. عمليات التطوير والتطوير الخاص، الخاصة بالأدوات ذات المستوى العالي (30+). الأدوات المحصل عليها من البريد المميز (حزم الترحيب، ومشتريات متجر الأدوات). المراجعة لا تشمل الأدوات والذهب المحصل عليهم من سقوط الوحوش، الحفر، الصيد. بالإضافة إلى الخبرة واللفل المكتسب. لكن القيمة الإجمالية لجميع هذه العمليات ليست مهمة، وسيحصل اللاعبون على تعويض بديل. مع ذلك، فمن الممكن أن نكون قد أغفلنا عن إحدى العمليات المهمة، ونرجو من اللاعب المعني في هذه الحالة مراسلتنا عبر إنشاء تذكرة في قسم الدعم الفني بخصوص الموضوع. التعويضات سيحصل اللاعبون ممن لعبو اللعبة في أخر 24 ساعة قبل الخلل على ما هو آت: عدد (2) 12+2 ترياق تكديس خبرة. عدد (1) 10 ترياق خبرة. عدد (12) ترياق سقوط. عدد (80) عطر بري C. عدد (1) عملة 100 ألف ذهبة. تمديد عروض الشحن وعربة الأسرار إلى يوم السبت 13 يوليو. خبرة وسقوط مضاعف ليومي 12 و13 يوليو، من الساعة 9م إلى 11م بتوقيت مكة المكرمة. شكرا على تفهمكم وصبركم وثقتكم. فريق إدارة اللعبة *** Dear heroes of WoS This post is a clarification for yesterday's mishap. What happened? Due to an unexpected error on 11/07 at 00:47 server time (UTC+3), we had to stop the game. This issue directly affected one of the core server systems, responsible for saving and retreiving player data from the game’s databases. After a thorough investigation, we discovered that the problem itself wasn't significant (in this case, a timeout happened during the save of player's logs), as such issues are rare. However, this highlighted a vulnerability: while our core server systems are designed to operate without errors, they are not foolproof. they can fail due to minor bugs (like programming errors or temporary disconnections with a database). When this happens, the entire game stops. The main concern, aside from needing to restart the server, is losing player data for a short period. Although this duration is brief (a few minutes) and not a major issue, the more critical point is that the data saved during server operation is not consistent since each character is saved individually and at different times. To illustrate this, let's consider the following example: Player A gives an item to Player B. Player A’s data is saved. An issue occurs, and the server stops. The server didn’t shut down properly in this case, so Player B’s receipt of the item wasn’t saved, while Player A’s action of giving the item was recorded, resulting in the item being lost entirely, this scenario can apply to various cases (the opposite scenario for example in which the item will be duplicated). Fortunately, operations are logged separately, and we can refer to these logs to determine what was lost or added. this process is very resource-intensive, as many operations occur per second, making manual verification nearly impossible, additionally, logging itself can have errors. Taken measures To address these issues, we’ve implemented 5 new autonomous and independent systems to the server, each with a specific role, including: Monitoring the main server systems and database connection quality. If an error occurs, another system attempts to restart the problematic system or connection and re-upload the necessary data to it. If there is an error saving information to a main database, another system temporarily transfers it to a secondary data center until the data is reviewed and merged in the main database. If any of the above systems fail or cannot handle the error, another system will identify all data that should have been saved, record it, and then automatically shut down the server as an emergency measure to prevent possible or further losses. We've also updated the programming framework used for the server (.net 6.0 to .net 8.0) to make it easier to investigate the server’s memory and understand any issues that arise. These systems were developed and tested quickly, given the game was down. therefore, it’s possible (although we hope not), that some side errors may occur. and we will continue testing and improving them during upcoming maintenance to avoid or minimize such issues. Regarding the problem yesterday, despite a rollback of about 15 minutes, we reviewed and corrected approximately 140 operations (for example: not receiving an item despite paying for it). These include: Trades or sales exceeding 20,000 gold or involving special items (from the store). Important item crafting operations or those done in large quantities. Quest rewards involving "Baron tokens". Storage and withdrawal operations from the warehouse. High-level item update and special refine operations (30+). Items obtained from premium mail (welcome packages and store purchases). The review does not include nonsignificant operations, such as items and gold obtained from monster drops, digging, fishing, experience, and level gained. and players will receive alternative compensation that is listed below. However, if there is an operation that has been slacked, we ask the player to contact us by creating a ticket in the technical support section. Compensation As for the compensation: Players who played the game in the last 24 hours before the glitch will receive the following: (2) 12+2 Piled exp potions. (1) 10 exp potions. (12) Drop potions. (80) C-essence. (1) 100,000 Gold Coin. extending recharge and the item shop offer until Saturday, July 13. 2x Exp and drop event from 9pm to 11pm UTC3+, on 12 and 13 of July Thank you for your understanding and patience: The management team of WoS. 3 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.