<p>تحطم المشرف عند إيقاف عملية فرعية</p>

تم إنشاؤها على ٩ ديسمبر ٢٠١٤  ·  4تعليقات  ·  مصدر: Supervisor/supervisor

عند إيقاف عملية فرعية للمشرف ، تتجاوز عملية الإيقاف وقت Stopwaitsecs وتستخدم "options.kill" لإيقاف العملية الفرعية.

2014-11-20 16:42: 45،352 نجاح المعلومات: استئناف العملية 'hbase - dptst-example - zoneerver' مع pid 46651
2014-12-09 02: 56: 47،389 تحذير قتل "hbase - مثال dptst - خادم المناطق" (46651) باستخدام SIGKILL
2014-12-09 02: 56: 47،422 CRIT مشكلة غير معروفة تقتل hbase - مثال dptst - خادم المناطق (46651): التتبع (آخر مكالمة أخيرة):
ملف "/home/work/app/supervisor/supervisor/process.py" ، السطر 390 ، في القتل
options.kill (pid ، سيج)
ملف "/home/work/app/supervisor/supervisor/options.py" ، السطر 1219 ، في القتل
os.kill (معرف المنتج ، إشارة)
خطأ نظام التشغيل: [Errno 3] لا توجد مثل هذه العملية

ومع ذلك ، هذا الاستثناء تحطم المشرف ، هل يمكننا تجاهل وتخطي هذا الاستثناء بدلاً من تحطيم المشرف؟

أي فكرة للمشاركة؟ شكرا

signals

التعليق الأكثر فائدة

يحدث هذا الانهيار بسبب عدم وجود () Subprocess.finish () أي منطق للتعامل مع ProcessStates.UNKNOWN ، والذي يتم طرحه فقط في مواقف قليلة (على سبيل المثال ، استدعاء "supervisorctl stop" لإنهاء عملية الرفرفة ، فقط لكي يصبح PID غير صالح قبل لحظات من تشغيل options.kill ، الذي يقصف باستثناء الذي يتم اكتشافه ويغير الحالة إلى UNKNOWN) ، وبالتالي ينتهي به الأمر إلى تحطيم البرنامج الخفي هنا . يمكنك محاكاة حالة السباق بإسقاط "استثناء الارتفاع ()" بعد options.kill (pid ، سيج).

اخترنا إصلاح هذا لخوادم التطبيقات الخاصة بنا عن طريق تغيير الحالة إلى FATAL (حتى لا يتم منعنا من إصلاح العملية) ، وإضافة فحص self.pid للعقل لفرع else النهائي في finish ().

ال 4 كومينتر

: +1:

ذات صلة: # 445

يحدث هذا الانهيار بسبب عدم وجود () Subprocess.finish () أي منطق للتعامل مع ProcessStates.UNKNOWN ، والذي يتم طرحه فقط في مواقف قليلة (على سبيل المثال ، استدعاء "supervisorctl stop" لإنهاء عملية الرفرفة ، فقط لكي يصبح PID غير صالح قبل لحظات من تشغيل options.kill ، الذي يقصف باستثناء الذي يتم اكتشافه ويغير الحالة إلى UNKNOWN) ، وبالتالي ينتهي به الأمر إلى تحطيم البرنامج الخفي هنا . يمكنك محاكاة حالة السباق بإسقاط "استثناء الارتفاع ()" بعد options.kill (pid ، سيج).

اخترنا إصلاح هذا لخوادم التطبيقات الخاصة بنا عن طريق تغيير الحالة إلى FATAL (حتى لا يتم منعنا من إصلاح العملية) ، وإضافة فحص self.pid للعقل لفرع else النهائي في finish ().

لقد رأينا هذه المشكلة أيضًا ، وأود الحصول على نظرة ثاقبة حول السبب الجذري ، وهو أن المشرف يعتقد أن العملية قد تم إنهاؤها بالفعل عند النقطة التي يرسل فيها supervisorctl stop إشارة القتل ، مما يؤدي إلى OSError: [Errno 3] No such process استثناء ps ). نوع من قضية الأذونات ربما؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات