إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
في بعض الأحيان، قد تحتاج إلى معالجة فشل المهام والتطبيقات في حل Azure Batch. تشرح هذه المقالة أنواعا مختلفة من أخطاء الدفعات وكيفية حل المشاكل الشائعة.
رموز الخطأ
بعض أنواع الأخطاء العامة التي قد تراها في Batch هي:
- فشل الشبكات للطلبات التي لم تصل أبدا إلى Batch، أو فشل الشبكات عندما لا تصل استجابة Batch إلى العميل في الوقت المناسب.
- أخطاء الخادم الداخلي. تحتوي هذه الأخطاء على استجابة HTTP لرمز الحالة القياسي
5xx. - الأخطاء المتعلقة بالتقييد. تتضمن
429هذه الأخطاء أو503استجابات HTTP لرمز الحالة معRetry-afterالعنوان. -
4xxأخطاء مثلAlreadyExistsوInvalidOperation. تشير هذه الأخطاء إلى أن المورد ليس في الحالة الصحيحة لانتقال الحالة.
للحصول على معلومات مفصلة حول رموز خطأ معينة، راجع حالة الدفعة ورموز الخطأ. يتضمن هذا المرجع رموز الخطأ لواجهة برمجة تطبيقات REST وخدمة Batch ومهام الوظيفة والجدولة.
فشل التطبيق
أثناء التنفيذ، قد ينتج عن التطبيق إخراج تشخيصي. يمكنك استخدام هذا الإخراج لاستكشاف المشكلات وإصلاحها. تكتب خدمة Batch الإخراج القياسي وإخراج الخطأ القياسي إلى stdout.txt وملفات stderr.txt في دليل المهام على عقدة الحساب. لمزيد من المعلومات، راجع الملفات والدلائل في Batch.
لتنزيل ملفات الإخراج هذه، استخدم مدخل Microsoft Azure أو أحد حزم SDK الدفعية. على سبيل المثال، لاسترداد الملفات لأغراض استكشاف الأخطاء وإصلاحها، استخدم ComputeNode.GetNodeFileوCloudTask.GetNodeFile في مكتبة Batch .NET.
أخطاء المهمة
تقع أخطاء المهمة في عدة فئات.
أخطاء المعالجة المسبقة
إذا فشلت مهمة في البدء، يتم تعيين خطأ معالجة مسبقة للمهمة. يمكن أن تحدث أخطاء المعالجة المسبقة إذا:
- تم نقل ملفات موارد المهمة.
- لم يعد حساب التخزين متوفرا.
- حدثت مشكلة أخرى منعت النسخ الناجح للملفات إلى العقدة.
أخطاء تحميل الملفات
إذا فشلت الملفات التي حددتها لمهمة في التحميل لأي سبب من الأسباب، يتم تعيين خطأ في تحميل الملف للمهمة. يمكن أن تحدث أخطاء تحميل الملف إذا:
- الرمز المميز لتوقيع الوصول المشترك (SAS) الذي تم توفيره للوصول إلى Azure Storage غير صالح.
- لا يوفر رمز SAS المميز أذونات الكتابة.
- لم يعد حساب التخزين متوفرا.
- حدثت مشكلة أخرى منعت النسخ الناجح للملفات من العقدة.
أخطاء التطبيق
يمكن أن تفشل العملية المحددة بواسطة سطر أوامر المهمة أيضا. لمزيد من المعلومات، راجع رموز إنهاء المهمة.
بالنسبة لأخطاء التطبيق، قم بتكوين Batch لإعادة محاولة المهمة تلقائيا حتى عدد محدد من المرات.
أخطاء القيد
لتحديد الحد الأقصى لمدة التنفيذ لوظيفة أو مهمة، قم بتعيين القيد maxWallClockTime . استخدم هذا الإعداد لإنهاء المهام التي تفشل في التقدم.
عندما تتجاوز المهمة الحد الأقصى للوقت:
- تم وضع علامة على المهمة كمكتملة.
- تم تعيين رمز الخروج إلى
0xC000013A. - تم وضع علامة على حقل schedulingError على أنه
{ category:"ServerError", code="TaskEnded"}.
رموز إنهاء المهمة
عندما تنفذ مهمة عملية، تقوم Batch بتعبئة خاصية رمز الخروج الخاص بالمهمة برمز الإرجاع للعملية. إذا أرجعت العملية رمز إنهاء غير صفري، فإن خدمة Batch تقوم بعلامات المهمة على أنها فاشلة.
لا تحدد خدمة Batch رمز الخروج الخاص بالمهمة. تحدد العملية نفسها، أو نظام التشغيل الذي تنفذ العملية عليه، رمز الخروج.
حالات فشل المهمة أو انقطاعها
قد تفشل المهام أحيانا أو تتم مقاطعتها. على سبيل المثال:
- قد يفشل تطبيق المهمة نفسه.
- قد يتم إعادة تشغيل العقدة التي يتم تشغيل المهمة عليها.
- قد تقوم عملية تغيير الحجم بإزالة العقدة من التجمع. قد يحدث هذا الإجراء إذا كان نهج إلغاء تخصيص التجمع يزيل العقد على الفور دون انتظار انتهاء المهام.
في جميع الحالات، يمكن ل Batch إعادة طلب المهمة تلقائيا للتنفيذ على عقدة أخرى.
من الممكن أيضا أن تتسبب مشكلة متقطعة في توقف مهمة عن الاستجابة أو يستغرق تنفيذها وقتا طويلا. يمكنك تعيين الحد الأقصى للفاصل الزمني للتنفيذ لمهمة. إذا تجاوزت إحدى المهام الفاصل الزمني، فإن خدمة Batch تقاطع تطبيق المهمة.
الاتصال بعقد الحوسبة
يمكنك إجراء تصحيح الأخطاء واستكشاف الأخطاء وإصلاحها عن طريق تسجيل الدخول إلى عقدة حساب عن بعد. استخدم مدخل Microsoft Azure لتنزيل ملف بروتوكول سطح المكتب البعيد (RDP) لعقد Windows، والحصول على معلومات اتصال Secure Shell (SSH) لعقد Linux. يمكنك أيضا تنزيل هذه المعلومات باستخدام واجهات برمجة تطبيقات Batch .NET أو Batch Python .
للاتصال بعقدة عبر RDP أو SSH، قم أولا بإنشاء مستخدم على العقدة. استخدم أحد الأساليب التالية:
- مدخل Microsoft Azure
- Batch REST API: adduser
- Batch .NET API: ComputeNode.CreateComputeNodeUser
- وحدة Python الدفعية: add_user
إذا لزم الأمر، قم بتكوين أو تعطيل الوصول إلى عقد الحساب.
استكشاف أخطاء عقد المشكلة وإصلاحها
يمكن لتطبيق أو خدمة عميل Batch فحص بيانات التعريف للمهام الفاشلة لتحديد عقدة مشكلة. كل عقدة في تجمع لها معرف فريد. تتضمن بيانات تعريف المهمة العقدة التي يتم فيها تشغيل مهمة. بعد العثور على عقدة المشكلة، جرب الطرق التالية لحل الفشل.
إعادة تشغيل العقدة
تؤدي إعادة تشغيل عقدة في بعض الأحيان إلى إصلاح المشكلات الكامنة، مثل العمليات العالقة أو المتعطلة. إذا كان التجمع يستخدم مهمة بدء، أو كانت مهمتك تستخدم مهمة إعداد وظيفة، فإن إعادة تشغيل العقدة تنفذ هذه المهام.
- Batch REST API: إعادة التشغيل
- Batch .NET API: ComputeNode.Reboot
إعادة تعيين العقدة
إعادة إنشاء عقدة يعيد تثبيت نظام التشغيل. ابدأ تشغيل المهام ومهام إعداد الوظيفة بعد حدوث إعادة التعيين.
- Batch REST API: إعادة تعيين
- Batch .NET API: ComputeNode.Reimage
إزالة العقدة من التجمع
إزالة العقدة من التجمع ضرورية في بعض الأحيان.
- Batch REST API: removenodes
- Batch .NET API: PoolOperations
تعطيل جدولة المهام على العقدة
يؤدي تعطيل جدولة المهام على عقدة إلى تحويل العقدة إلى وضع عدم الاتصال بشكل فعال. لا تعين الدفعة أي مهام أخرى إلى العقدة. ومع ذلك، تستمر العقدة في العمل في التجمع. يمكنك بعد ذلك إجراء مزيد من التحقيق في حالات الفشل دون فقدان بيانات المهمة الفاشلة. لن تتسبب العقدة أيضا في المزيد من حالات فشل المهام.
على سبيل المثال، تعطيل جدولة المهام على العقدة. ثم قم بتسجيل الدخول إلى العقدة عن بعد. افحص سجلات الأحداث، وقم باستكشاف الأخطاء وإصلاحها الأخرى. بعد حل المشكلات، قم بتمكين جدولة المهام مرة أخرى لإعادة العقدة إلى الاتصال بالإنترنت.
- Batch REST API: تمكين الجدولة
- Batch .NET API: ComputeNode.EnableScheduling
يمكنك استخدام هذه الإجراءات لتحديد مهام معالجة الدفعات التي تعمل حاليا على العقدة. على سبيل المثال، عند تعطيل جدولة المهام باستخدام Batch .NET API، يمكنك تحديد قيمة تعداد ل DisableComputeNodeSchedulingOption. يمكنك اختيار:
- إنهاء المهام قيد التشغيل:
Terminate - أعد ترتيب المهام للجدولة على العقد الأخرى:
Requeue - السماح بإكمال المهام قيد التشغيل قبل تنفيذ الإجراء:
TaskCompletion
إعادة المحاولة بعد الأخطاء
تقوم واجهات برمجة التطبيقات الدفعية بإعلامك بالفشل. يمكنك إعادة محاولة جميع واجهات برمجة التطبيقات باستخدام معالج إعادة المحاولة العمومي المضمن. من أفضل الممارسات استخدام هذا الخيار.
بعد الفشل، انتظر عدة ثوان قبل إعادة المحاولة. إذا قمت بإعادة المحاولة بشكل متكرر جدا أو بسرعة كبيرة جدا، يقوم معالج إعادة المحاولة بتقييد الطلبات.