تشخيص أخطاء حزمة التعليمات البرمجية الشائعة باستخدام "تصميم الخدمة"

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

متى تنتهي عملية أو حاوية بشكل غير متوقع؟

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

بعد تكوين البيئة بشكل صحيح، يحاول "تصميم الخدمة" إظهار حزمة التعليمات البرمجية. تعتبر هذه الخطوة ناجحة إذا أبلغ وقت تشغيل الحاوية أو نظام التشغيل عن تنشيط العملية أو الحاوية بنجاح. إذا لم ينجح التنشيط، يجب أن تظهر لك رسالة حماية في SFX مشابهة لما يلي:

There was an error during CodePackage activation. Service host failed to activate. Error: 0xXXXXXXXX

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

The process/container terminated with exit code: XXXXXXXX. Please look at your application logs/dump or debug your code package for more details. For information about common termination errors, please visit https://aka.ms/service-fabric-termination-errors

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

كيف يمكنني معرفة ما إذا كان "تصميم الخدمة" قد أنهى حزمة التعليمة البرمجية؟

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

ملاحظة

إذا انتهت العملية أو الحاوية باستخدام تعليمة برمجية للخروج بخلاف التعلميات البرمجية الموجودة في الجدول التالي، فلن يكون "تصميم الخدمة" مسؤولة عن إنهائها.

رمز الإنهاء الوصف
7147 يشير إلى أن "تصميم الخدمة" أوقف تشغيل العملية أو الحاوية بأمان عن طريق إرسال إشارة Ctrl + C إليها.
7148 يشير إلى أن "تصميم الخدمة" أنهى العملية أو الحاوية. في بعض الأحيان، يشير رمز الخطأ هذا إلى أن العملية أو الحاوية لم تستجب في الوقت المناسب بعد إرسال إشارة Ctrl + C، وكان لابد من إنهائها.

رموز الخطأ الشائعة الأخرى وإصلاحاتها المحتملة

رمز الإنهاء قيمة سداسية عشرية وصف قصير السبب الجذري الإصلاح المحتمل
3221225794 0xc0000142 STATUS_DLL_INIT_FAILED يعني هذا الخطأ في بعض الأحيان أن الجهاز قد نفد من مساحة كومة الذاكرة المؤقتة لسطح المكتب. هذا السبب محتمل بشكل خاص إذا كان لديك العديد من العمليات التي تنتمي إلى التطبيق الذي يعمل على العقدة. إذا لم يتم إنشاء البرنامج للاستجابة لإشارات Ctrl+C، فيمكنك تمكين إعداد EnableActivateNoWindow في بيان "نظام المجموعة". تمكين هذا الإعداد يعني أن حزمة التعليمات البرمجية ستعمل بدون نافذة واجهة المستخدم الرسومية ولن تتلقى إشارات Ctrl + C. يقلل هذا الإجراء أيضًا من مقدار مساحة كومة الذاكرة المؤقتة لسطح المكتب التي تستهلكها كل عملية. إذا كانت حزمة التعليمات البرمجية تحتاج إلى تلقي إشارات Ctrl + C، فيمكنك زيادة حجم كومة الذاكرة المؤقتة لسطح المكتب في العقدة.
3762504530 0xe0434352 غير متوفر تمثل هذه القيمة رمز الخطأ لاستثناء غير مُعالج من التعليمات البرمجية المُدارة (أي Microsoft .NET). تُشير التعليمة البرمجية للخروج هذه إلى أن تطبيقك أثار استثناء ظل دون معالجة، ما أنهى العملية. كخطوة أولى في تحديد سبب هذا الخطأ، قم بتصحيح أخطاء سجلات التطبيق وتفريغ الملفات.

الخطوات التالية