المقدمة
يوضح هذا المستند كيفية أستكشاف أخطاء تطبيقات IOx وإصلاحها أو تصحيح أخطائها التي تواجه مشكلة في بدء التشغيل أو توقفها بشكل غير متوقع.
معلومات أساسية
عند تطوير تطبيقات IOx، فإن الطريقة الأفضل هي تطويره على منصة أخرى و/أو وضع آلية تحديد الوصول. وبمجرد إختبار تطبيق IOx المطلوب وجاهزيته، يمكن تغليفه ونشرها على جهاز يدعم تقنية IOx. وفي بعض الحالات، لا يعمل هذا النشر كما هو متوقع، فقد يتوقف التطبيق بشكل غير متوقع أو قد لا يبدأ حتى.
يجب إيقاف السلوك الافتراضي لكل من IOx VM/container/application بمجرد إنهاء الأمر الهدف. وهذا يجعل من الصعب أستكشاف الأخطاء وإصلاحها في حالة حدوث أمر غير متوقع مع إختفاء جميع المعلومات غير المتواصلة. والنتيجة الأخرى هي أنه يستهلك الكثير من الوقت عندما تريد اللعب/التجربة مع قدرات تطبيقات IOx. يتطلب تشغيل تطبيق/هدف/أمر/برنامج نصي آخر تغيير الحزمة على الأقل.yaml وإنشاء الحزمة الجديدة وإلغاء تنشيط التطبيق الحالي والترقية باستخدام الحزمة الجديدة وإعادة تنشيط التطبيق وتشغيله.
معلومات أساسية حول إنهاء تطبيق IOx
لا يوفر "المدير المحلي" وعميل IOx الكثير من المعلومات حول سبب توقف التطبيقات/الحاويات/الأجهزة الافتراضية (VMs). ولحسن الحظ، يتتبع WatchDog.log هذا ويزودك أيضا بآخر رمز خروج/إرجاع للتطبيق. على الرغم من أن هذا قد لا يساعدك دائما، إلا أنه في الكثير من الحالات يقودك إلى السبب الذي تبحث عنه.
لجلب WatchDog.log مع عميل IOx:
[jedepuyd@db ~]$ ioxclient app logs tail iox_docker_test watchDog.log 10
Currently active profile : default
Command Name: application-logs-tail
App/Service : iox_docker_test, Logfile : watchDog.log, viewing last 10 lines
APP END TIME:1498207460
Time taken by App : 0 minutes and 0 seconds.
Got the ip address - 10.197.215.227 for interface eth0
All interfaces got the ips
APP START TIME:1498207536
App iox_docker_test started with PID : 11
Monitoring this process now
App iox_docker_test completed with exit code: 127
APP END TIME:1498207536
Time taken by App : 0 minutes and 0 seconds.
لجلب السجل باستخدام Local Manager:
- سجل الدخول إلى المدير المحلي.
- كما هو موضح في الصورة، انقر فوق بدء إلغاء تنشيط إدارة للتطبيق ذي الصلة
- حدد علامة التبويب سجلات ، كما هو موضح في الصورة:
- قم بتنزيل WatchDog.log
على سبيل المثال، يتم إنهاء هذا التطبيق بشكل غير متوقع ويمكنك الاطلاع على ذلك في watchDog.log
APP START TIME:1498207536
App iox_docker_test started with PID : 11
Monitoring this process now
App iox_docker_test completed with exit code: 127
APP END TIME:1498207536
كما ترى في القصاصة الآنفة الذكر، كان رمز الخروج 127. هذا هو رمز إرجاع محجوز وهو يعني: لم يتم العثور على الأمر، والذي يشير إلى تحديد أمر معيب كهدف أو أن البرنامج النصي الذي تم بدء تشغيله يحاول إستدعاء أمر معيب.
رموز الخروج المحجوزة الأكثر شيوعا:
آر سي |
معنى |
تعليق |
1 |
CatAll for General Errors |
أخطاء متنوعة مثل "التقسيم على صفر" وغيرها من العمليات غير المسموح بها |
2 |
إساءة إستعمال بنايات الصدف |
الكلمة الأساسية أو الأمر مفقود، أو مشكلة الأذن (وألغي كود الإرجاع على مقارنة ملفات ثنائية فاشلة). |
126 |
تعذر تنفيذ الأمر |
مشكلة الإذن أو الأمر ليس تنفيذيا |
127 |
لم يتم العثور على الأمر |
مشكلة محتملة مع $PATH أو خطأ مطبعي |
128 |
وسيطة غير صالحة للإنهاء (RC>255) |
لا تأخذ الخروج إلا حلقات عدد صحيح في النطاق 0 - 255 |
128+ن |
إشارة خطأ فادح "n" |
إرجاع رمز الخروج 137 (128 + 9) -> إشارة خطأ التطبيق كانت 9 |
130 |
تم إنهاؤه بواسطة Ctrl+C |
يعتبر Control-C إشارة خطأ قاتلة 2، (130 = 128 + 2، راجع أعلاه) |
255 |
حالة الخروج خارج النطاق (RC>255) |
لا تأخذ الخروج إلا حلقات عدد صحيح في النطاق 0 - 255 |
يمكن الحصول على المزيد من المعلومات حول هذا الموضوع هنا: http://tldp.org/LDP/abs/html/exitcodes.html
منع إيقاف حاويات الطراز IOx عند إنهاء التطبيق/الهدف
يوفر الموضوع أعلاه معلومات حول كيفية أستكشاف أخطاء التطبيق المعيب وإصلاحها، ولكنه لا يمنع تطبيق IOx من التوقف. وهذا يعني أن المعلومات القيمة على الأرجح المتعلقة باستكشاف الأخطاء وإصلاحها قد إختفت نظرا لأن جميع البيانات غير المتواصلة لم تعد موجودة.
وكما ذكرنا أعلاه، تتمثل حالة إستخدام أخرى في الاستفادة من إمكانات تطبيق IOx الذي تم بدء تشغيله أو المرونة باستخدام الأوامر والوسيطات.
لمنع إنتهاء تطبيقات IOx عند نهاية التطبيق، يمكنك تمرير تصحيح الأخطاء إلى أمر التنشيط:
[jedepuyd@db ~]$ ioxclient app activate -debug on testdebug
Currently active profile : default
Command Name: application-activate
App testdebug is Activated
[jedepuyd@db ~]$ ioxclient app start testdebug
Currently active profile : default
Command Name: application-start
App testdebug is Started
[jedepuyd@db ~]$ ioxclient app console testdebug
Currently active profile : default
Command Name: application-console
Console setup is complete..
Running command : [ssh -p 2222 -i testdebug.pem appconsole@10.48.43.197]
/ #
في المثال أعلاه، بعد تنشيط علامة -debug وبدء تشغيلها، يمكنك الوصول إلى الحاوية حتى في حالة إنهاء التطبيق. يمكنك تشغيل أوامر أخرى هنا، كما يمكنك تجربة التطبيق بحرية في البيئة التي يتم فيها تشغيل التطبيق. يوفر ذلك الكثير من الوقت في حل مشكلات التطبيقات أو الحصول على الهدف الصحيح ومجموعة الوسيطات الصحيحة.