أخطاء مهمة ومهمة Azure Batch
يمكن أن تحدث أخطاء مختلفة عند إضافة مهام ومهام Azure Batch أو جدولتها أو تشغيلها. من السهل اكتشاف الأخطاء التي تحدث عند إضافة وظائف ومهام. عادة ما تقوم واجهة برمجة التطبيقات أو سطر الأوامر أو واجهة المستخدم بإرجاع أي حالات فشل على الفور. تتناول هذه المقالة كيفية التحقق من الأخطاء التي تحدث بعد إرسال المهام والمهام ومعالجتها.
حالات فشل الوظائف
المهمة هي مجموعة من مهمة واحدة أو أكثر، والتي تحدد سطور الأوامر للتشغيل. يمكنك تحديد المعلمات الاختيارية التالية عند إضافة وظيفة. تؤثر هذه المعلمات على كيفية فشل الوظيفة.
JobConstraints. يمكنك اختياريا استخدام الخاصية
maxWallClockTime
لتعيين الحد الأقصى للوقت الذي يمكن أن تكون فيه الوظيفة نشطة أو قيد التشغيل. إذا تجاوزتmaxWallClockTime
المهمة ، تنتهي المهمة بالخاصيةterminateReason
المعينة إلىMaxWallClockTimeExpiry
في JobExecutionInformation.JobPreparationTask. يمكنك اختياريا تحديد مهمة إعداد وظيفة لتشغيلها على كل عقدة حساب مجدولة لتشغيل مهمة مهمة. تقوم العقدة بتشغيل مهمة إعداد الوظيفة قبل المرة الأولى التي تقوم فيها بتشغيل مهمة للوظيفة. إذا فشلت مهمة إعداد الوظيفة، فلن يتم تشغيل المهمة ولا تكتمل المهمة.
JobReleaseTask. يمكنك اختياريا تحديد مهمة إصدار وظيفة للوظائف التي لها مهمة إعداد وظيفة. عند إنهاء مهمة، يتم تشغيل مهمة إصدار الوظيفة على كل عقدة تجمع قامت بتشغيل مهمة إعداد وظيفة. إذا فشلت مهمة إصدار وظيفة، فلا تزال المهمة تنتقل إلى حالة
completed
.
في مدخل Microsoft Azure، يمكنك تعيين هذه المعلمات في مدير الوظيفة، ومهام الإعداد والإصدار، وأقسام متقدمة من شاشة Batch Add job .
خصائص المهمة
تحقق من خصائص المهمة التالية في JobExecutionInformation بحثا عن الأخطاء:
terminateReason
تشير الخاصيةMaxWallClockTimeExpiry
إلى ما إذا كانت المهمة قد تجاوزتmaxWallClockTime
المحدد في قيود الوظيفة وبالتالي تم إنهاء المهمة. يمكن أيضا تعيين هذه الخاصية إلىtaskFailed
إذا تم تعيين سمة المهمةonTaskFailure
إلىperformExitOptionsJobAction
، وفشلت المهمة بشرط إنهاء يحدد منjobAction
terminatejob
.يتم تعيين الخاصية JobSchedulingError إذا كان هناك خطأ في الجدولة.
مهام إعداد الوظائف
يتم تشغيل مثيل لمهمة إعداد الوظيفة على كل عقدة حساب في المرة الأولى التي تقوم فيها العقدة بتشغيل مهمة للوظيفة. يمكنك التفكير في مهمة إعداد الوظيفة كقالب مهمة، مع تشغيل مثيلات متعددة، حتى عدد العقد في تجمع. تحقق من مثيلات مهمة إعداد الوظيفة لتحديد ما إذا كانت هناك أخطاء.
يمكنك استخدام Job - List Preparation and Release Task Status API لسرد حالة التنفيذ لجميع مثيلات إعداد الوظيفة وإصدار المهام لمهمة محددة. كما هو الحال مع المهام الأخرى، يتوفر JobPreparationTaskExecutionInformation مع خصائص مثل failureInfo
و exitCode
و result
.
عند تشغيل مهمة إعداد مهمة، تنتقل المهمة التي أدت إلى مهمة إعداد الوظيفة إلى حالة مهمة .preparing
إذا فشلت مهمة إعداد الوظيفة، تعود المهمة المشغلة active
إلى الحالة ولا تعمل.
إذا فشلت مهمة إعداد الوظيفة، فلن يتم تشغيل مهمة الوظيفة المشغلة. لم تكتمل المهمة وهي عالقة. إذا لم تكن هناك مهام أخرى ذات مهام يمكن جدولتها، فقد لا يتم استخدام التجمع.
مهام إصدار الوظيفة
يتم تشغيل مثيل لمهمة إصدار وظيفة عند إنهاء المهمة على كل عقدة شغلت مهمة إعداد وظيفة. تحقق من مثيلات مهمة إصدار الوظيفة لتحديد ما إذا كانت هناك أخطاء.
يمكنك استخدام Job - List Preparation and Release Task Status API لسرد حالة التنفيذ لجميع مثيلات إعداد الوظيفة وإصدار المهام لمهمة محددة. كما هو الحال مع المهام الأخرى، يتوفر JobReleaseTaskExecutionInformation مع خصائص مثل failureInfo
و exitCode
و result
.
إذا فشلت مهمة واحدة أو أكثر من مهام إصدار الوظيفة، فلا تزال يتم إنهاء المهمة وتنتقل إلى حالة completed
.
حالات فشل المهمة
يمكن أن تفشل مهام الوظيفة للأسباب التالية:
- يفشل سطر أوامر المهمة ويرجع برمز إنهاء غير صفري.
- لا يتم تنزيل مهمة واحدة أو أكثر
resourceFiles
محددة لمهمة. - لا يتم تحميل مهمة واحدة أو أكثر
outputFiles
محددة لمهمة. - يتجاوز الوقت المنقضي للمهمة الخاصية
maxWallClockTime
المحددة في TaskConstraints.
في جميع الحالات، تحقق من الخصائص التالية بحثا عن الأخطاء والمعلومات حول الأخطاء:
تحتوي الخاصية TaskExecutionInformation على خصائص متعددة توفر معلومات حول خطأ. تشير taskExecutionResult إلى ما إذا كانت المهمة قد فشلت لأي سبب من الأسباب،
failureInfo
exitCode
وتوفر المزيد من المعلومات حول الفشل.تنتقل المهمة دائما إلى
completed
TaskState، سواء نجحت أو فشلت.
ضع في اعتبارك تأثير حالات فشل المهام على الوظيفة وعلى أي تبعيات للمهمة. يمكنك تحديد ExitConditions لتكوين إجراءات التبعيات والمهمة.
- تتحكم DependencyAction في حظر المهام التي تعتمد على المهمة الفاشلة أو تشغيلها.
- يتحكم JobAction في ما إذا كانت المهمة الفاشلة تتسبب في تعطيل المهمة أو إنهائها أو عدم تغييرها.
أسطر أوامر المهمة
لا تعمل أسطر أوامر المهمة ضمن shell على عقد الحوسبة، لذلك لا يمكنها استخدام ميزات shell في الأصل مثل توسيع متغير البيئة. للاستفادة من هذه الميزات، يجب استدعاء shell في سطر الأوامر. لمزيد من المعلومات، راجع توسيع سطر الأوامر لمتغيرات البيئة.
يكتب إخراج سطر أوامر المهمة إلى ملفات stderr.txt stdout.txt. قد يكتب التطبيق الخاص بك أيضا إلى ملفات السجل الخاصة بالتطبيق. تأكد من تنفيذ التحقق الشامل من الأخطاء للتطبيق الخاص بك للكشف عن المشكلات وتشخيصها على الفور.
سجلات المهام
إذا كانت عقدة التجمع التي شغلت مهمة لا تزال موجودة، يمكنك الحصول على ملفات سجل المهام وعرضها. تسمح العديد من واجهات برمجة التطبيقات بإدراج ملفات المهام والحصول عليها، مثل ملف - الحصول على من المهمة. يمكنك أيضا سرد ملفات السجل وعرضها لمهمة أو عقدة باستخدام مدخل Microsoft Azure.
في أعلى صفحة Overview لعقدة، حدد Upload batch logs.
في صفحة Upload Batch logs ، حدد Pick storage container، وحدد حاوية Azure Storage لتحميلها، ثم حدد Start upload.
يمكنك عرض السجلات أو فتحها أو تنزيلها من صفحة حاوية التخزين.
إخراج الملفات
نظرا لأن تجمعات الدفعات وعقد التجمع غالبا ما تكون سريعة الزوال، مع إضافة العقد وحذفها باستمرار، فمن الأفضل حفظ ملفات السجل عند تشغيل المهمة. ملفات إخراج المهام هي طريقة ملائمة لحفظ ملفات السجل إلى Azure Storage. لمزيد من المعلومات، راجع الاحتفاظ ببيانات المهمة في Azure Storage باستخدام Batch service API.
في كل تحميل ملف، يكتب Batch ملفي سجل إلى عقدة الحساب، fileuploadout.txt fileuploaderr.txt. يمكنك فحص ملفات السجلات هذه لمعرفة المزيد حول فشل معين. إذا لم تتم محاولة تحميل الملف، على سبيل المثال بسبب تعذر تشغيل المهمة نفسها، فإن ملفات السجل هذه غير موجودة.
الخطوات التالية
- تعرف على المزيد حول وظائف الدفعات والمهام ومهام إعداد الوظائف وإصدارها.
- تعرف على أخطاء تجمع الدفعات والعقدة.