FiveM “server thread hitch warning”: ماذا يعني وكيف تصلحه
تحذير مثل “server thread hitch warning: timer interval of 250 milliseconds” يعني أن الحلقة الرئيسية للخادم توقفت طوال تلك المدة. يشعر بها اللاعبون على شكل rubber-banding وتأخر في الأفعال وعدم تزامن. إليك كيف تجد السبب بدل التخمين.
معنى التحذير
يشغّل FXServer معظم منطق اللعبة، بما في ذلك كل سكربت على الخادم، على خيط رئيسي واحد. يجب أن تستغرق كل دورة من تلك الحلقة بضع أجزاء من الثانية. وعندما تستغرق إحداها وقتًا أطول بكثير، تطبع وحدة التحكم تحذير hitch مع مدة التوقف. وقد تذكر تحذيرات مشابهة خيط الشبكة أو خيط المزامنة.
- بعض حالات hitch عند بدء الخادم أمر طبيعي: فالموارد تُحمَّل وقاعدة البيانات تستعد.
- حالات hitch التي تتكرر أثناء اللعب تعني أن هناك خللًا، وسيلاحظه اللاعبون.
1. اعثر على المورد باستخدام profiler
يحتوي FXServer على profiler مدمج. شغّله في وحدة تحكم الخادم (Live Console في txAdmin)، وليس في وحدة تحكم F8، أثناء حدوث حالات hitch:
profiler record 500 profiler status profiler saveJSON hitch.json
profiler record 500 يسجّل الإطارات الـ 500 التالية. عندما يُظهر profiler status أن التسجيل اكتمل، احفظه، وافتح أدوات المطوّر في Chrome، وانتقل إلى تبويب Performance وحمّل الملف. تظهر حالات hitch كقمم عالية؛ كبّر إحداها لترى أي مورد استهلك الوقت، وصولًا إلى الملف والسطر.
2. أصلح الأسباب المعتادة في السكربتات
- حلقات تعمل في كل tick. حلقة على الخادم مع
Wait(0)تعمل بأسرع ما يمكن. معظم حلقات الخادم يمكنها الانتظار مئات أو آلاف الأجزاء من الثانية بين الدورات. - العمل على كل اللاعبين أو الكيانات دفعة واحدة. المرور على كل اللاعبين أو المركبات كل ثانية يصبح مكلفًا مع نمو المدينة. وزّع العمل، أو استجب للأحداث بدل الفحص المستمر.
- استعلامات قاعدة بيانات بطيئة. استعلام يمسح جدولًا كبيرًا دون فهرس قد يستغرق مئات الأجزاء من الثانية. يبلّغ oxmysql عن الاستعلامات البطيئة في وحدة التحكم؛ أضف فهارس للأعمدة التي تبحث فيها، ولا تشغّل الاستعلامات داخل حلقات متقاربة.
- إغراق الأحداث. العملاء الذين يطلقون أحداث الخادم مرات كثيرة في الثانية، خطأً أو غشًا، يُبقون الخيط الرئيسي مشغولًا. حدّد معدل الأحداث الثقيلة.
- الموارد القديمة. احذف السكربتات التي لم تعد تستخدمها، وحدّث ما تستخدمه.
3. تحقق من خادم قاعدة البيانات
تكتب خوادم لعب الأدوار في قاعدة البيانات باستمرار. أبقِ MariaDB على الجهاز نفسه أو قريبًا جدًا منه، على تخزين NVMe، مع ذاكرة كافية. نظّف جداول السجلات التي تنمو بلا حد، وخذ نسخًا احتياطية من قاعدة البيانات بانتظام.
4. تحقق من المستضيف
- سرعة المعالج. يستخدم الخيط الرئيسي نواة واحدة، لذا تحدد سرعة الخيط الواحد مقدار عمل السكربتات الذي يتسع في كل إطار. ونواة بطيئة أو مثقلة لدى المستضيف تحوّل تكاليف السكربتات الصغيرة إلى حالات hitch.
- مكافح الفيروسات على خوادم Windows. الفحص الفوري لمجلد خادم كبير قد يستهلك الكثير من المعالج. على خوادم Windows التي ندعمها، استهلك Microsoft Defender معالجًا أكثر من FXServer نفسه. استثنِ مجلد الخادم و
FXServer.exeوبرنامج قاعدة البيانات من الفحص، وأبقِ الحماية الفورية مفعّلة لكل ما عداها. - برامج أخرى على الجهاز نفسه. البوتات ولوحات الويب والنسخ الاحتياطي التي تعمل في أوقات الذروة تتنافس على المعالج نفسه.
التأخر على شاشات بعض اللاعبين فقط؟
تأخر العميل يختلف عن hitch الخادم. إذا كان التقطّع لدى بعض اللاعبين فقط، فاطلب منهم فتح وحدة تحكم F8 وتشغيل resmon 1 لمعرفة الموارد التي تستهلك أكبر وقت لديهم.
امنع تكرار المشكلة
- افحص الأداء بعد إضافة أي سكربت كبير، لا بعد أسابيع.
- راقب رسم المعالج البياني لخادمك في أوقات الذروة.
- اختبر التحديثات على نسخة من الخادم أولًا.
أخطاء السكربت في وحدة التحكم، مثل “attempt to index a nil value”، مشكلة مختلفة. راجع كيف تصلح هذا الخطأ في سكربتات ESX وQBCore.
استضف خادم FiveM في سنغافورة
ping منخفض للاعبين في الهند وماليزيا وإندونيسيا، على AMD EPYC مع NVMe وحماية Gcore من DDoS على كل IP.
