سؤال

في بعض الأحيان ، ينتقل موقع Django المستند إلى 504 أخطاء مهلة Gateway بحيث لا يمكن عرض أي صفحة.

هل من الممكن كتابة برنامج shell و cronjob يتم تشغيله كل 5 دقائق للكشف عن هذه الأخطاء وإعادة تشغيل عملية fastcgi إذا لزم الأمر؟

أنا أستخدم الأمر حاليًا أدناه لإعادة تشغيل FastCGI في حالة تعطله ولكنه لا يعمل لصالح الموقف أعلاه لأنه عند حدوث أخطاء بوابة 504 ، لا تزال العمليات قيد التشغيل.

ps ax | grep -v grep | grep port=8001 > /dev/null || restart_fcgi.sh
هل كانت مفيدة؟

المحلول

ربما يجب عليك معرفة ذلك لماذا يبدأ الموقع في تقديم 504 خطأ أولاً - تحقق من السجلات (أو أضف التسجيل إذا لم يكن لديك معلومات كافية) ، وإصلاح أي مشكلة. بدلاً من ذلك ، قد تجد NGINX + APACHE + MOD_WSGI نهجًا أكثر استقرارًا - يعد NGINX خادمًا رائعًا للمواقع الأمامية لخدمة المحتوى الثابت ، ولكن Apache ممتازة لاستضافة العمليات الديناميكية. حاول الجمع بينهما على حد سواء. اعتدت على استخدام Nginx + FastCgi ، لكنني وجدت أن الأول هو نهج أكثر استقرارًا.

إذا كنت لا تزال غير قادر على تحديد سبب مشكلتك ، فيمكنك إعداد برنامج نصي شاشة يعمل محليًا والتحقق من رمز الاستجابة - إذا وجد 5xx ، فيمكنه إجبار عملية إعادة تشغيل FastCGI. يمكنك استخدام Python + httplib للبرنامج النصي ، و OS.System يقوم بتشغيل البرنامج النصي Shell الخاص بك (بالإضافة إلى بيان Kill -9 مناسب) أعلاه.

نصائح أخرى

أعتقد أنه إذا كنت تواجه هذه المشكلة ، إذن مشرف هو صديقك. صديق جيد جدا. مثل Daemontools ، باستثناء التكوين السهل ، والكثير من المساعدة والاستخدام غير الجذر.

يجب أن تحاول العثور على المشكلة بالتأكيد ، ولكن بغض النظر ، فإن ساعة الإعدادية تعني أنك ستتمكن من الاعتماد على عملية إعادة التشغيل بعد الفشل لفترة كافية لتعيش حياتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top