502 بوابة سيئة ... استجابة غير صالحة من خادم Upstream (Apache and JBoss)

StackOverflow https://stackoverflow.com/questions/1109241

  •  12-09-2019
  •  | 
  •  

سؤال

أنا أستخدم Apache على جهاز واحد لخدمة الطلبات إلى JBoss على جهاز آخر. كل شيء يعمل بشكل جيد عندما أقوم بتشغيل JBOSS وأنا قادر على الوصول إلى تطبيق الويب، ولكن بعد بضع ساعات، بدأت في النهاية في الحصول على "خادم الوكيل تلقى استجابة غير صالحة من أخطاء خادم Upstream". إذا قمت بإعادة تشغيل JBOSS، فكل شيء يعمل بشكل جيد مرة أخرى، ولكن بعد عدة ساعات لدي نفس المشكلة ...

هل يعرف أي شخص ما الذي يمكن أن يسبب هذه المشكلة؟ ليس لدي حق الوصول إلى سجلات Apache في هذا الوقت (يجب أن أكون في غضون ساعات قليلة) ولكن يبدو أنه شيء مع JBoss منذ إعادة تشغيله هو الإصلاح المؤقت.

أنا أستخدم JBOSS4.2.3 و Apache 1.3 مع MOD_JK. لا يمكنني العثور على أي أخطاء في سجلات JBOSS والتطبيق الذي أحاول الوصول إليه لا يفعل أي شيء يستغرق وقتا طويلا. الصفحة الرئيسية هي مجرد صفحة تسجيل دخول بسيطة. لدي منافذ 8009 و 8080 مفتوحة للاتصال بين خادم التطبيق وخادم الويب. أنا لا أعرف ما هو التكوين خطأ.

هل كانت مفيدة؟

المحلول

هذا يبدو لي مثل mod_jk في Apache هو الخروج من المزامنة مع موصل AJP في JBOSS. يستخدم بروتوكول AJP اتصالات مستمرة وإعادة استخدامها بين خادم الويب وخادم التطبيقات، وإذا لم يتم تكوين البروتوكول بالضبط نفسها على كلا الطرفين للاتصال، في النهاية تتحقق الاتصالات التي لا معنى لها في نهاية واحدة من الاتصال، ولكن الطرف الآخر يحتفظ في محاولة لاستخدامها. العرض هو خطأ 502.

اقتراحي الأول هو: لا تستخدم mod_jk إلا إذا كنت بحاجة إلى ذلك. من الصعب تكوينه للحصول على نظام مستقر. إذا لم تكن بحاجة إلى أدائها أو تحميل ميزات موازنة التحميل، أقترح استخدام MOD_PROXY بدلا من ذلك. انها مجرد جيدة لمعظم التطبيقات، وسهلة جدا.

ولكن إذا كنت ترغب في التمسك MOD_JK، فإن أول شيء تحتاج إليه هو تأكد من أنك تستخدم أحدث إصدار MOD_JK (حاليا 1.2.28)، لأن الإصدارات الأقدم من الصعب تكوينها. لحسن الحظ، لا يزال mod_jk مدعوما على Apache 1.3.

بعد ذلك، تحقق من ملف سجل MOD_JK (تم تكوينه باستخدام التوجيه JKLOGFILE). إذا كنت تشاهد مجموعة من الأخطاء المرتبطة بالاتصال في جميع أنحاء الوقت، تسوء الأمور، فأنت بحاجة إلى تعديل تكوين JK الخاص بك في كلا طرفي الاتصال. الجاني الأكثر احتمالا هو إعدادات المهلة، لذلك قراءة عن هؤلاء هنا, والتأكد من أن كلا الطرفين تغني من نفس ورقة التراتيم.

نصائح أخرى

لقد رأيت أيضا أن هذا يحدث باستخدام Apache و Tomcat. في وضعي الخاص، كان التطبيق المنتشر في Tomcat علة تسبب مؤشرات ترابط الاستجابة لشنق. في نهاية المطاف، نفد Tomcat من خيوط العمال، وكان Apache غير قادر على إنشاء اتصال.

في حالتنا، لم يتم إصدار اتصالات قاعدة البيانات مرة أخرى بشكل صحيح في تجمع اتصال، وكانت مؤشرات الترابط الأخرى تنتظر إلى أجل غير مسمى للحصول على اتصال من البركة. ومع ذلك، فإن أي شيء يستمر إلى أجل غير مسمى حيا هو موضوع التعامل مع استجابة يمكن أن يؤدي إلى نفس المشكلة.

كان لدي نفس المشكلة ولكن مع Apache و Glassfish. أخيرا، يمكنني إصلاحه في تكوين نفس المهلة في كلا الجانبين.

في Glassfish تغيير تكوين المستمع وفي Apache Modifiyying العامل .properties مع هذا الخط:

worker.worker_name.socket_timeout=300

لست متأكدا من طريقة تكوين هذا في JBOSS، قد تعدل web.xml أو cluster-service.xml.

إذا كنت تتصل اباتشي مع هر وانتهى الأمر في هذه المدونة مثلي تماما، فمن المنطقي.

قبول اتصال AJP / 1.3 في Tomcat حل هذا الخطأ بالنسبة لي. لا تنس التعليق على الخدمة على بروتوكول HTTP.

**<!--<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
-->
<Connector port="8081" protocol="AJP/1.3"
           connectionTimeout="20000"
           redirectPort="8443" />**
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top