تطبيق Jruby Rails على ارتفاع استخدام وحدة المعالجة المركزية Tomcat

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

سؤال

قد ينتمي هذا أيضًا إلى خطأ الخادم.إنه نوع من السرد بين تكوين الخادم والتعليمات البرمجية (على ما أظن)

هذا هو الإعداد الخاص بي:

Rails 2.3.5 app running on jruby 1.3.1
Service Oriented backend over JMS with activeMQ 5.3 and mule 2.2.1
Tomcat 5.5 with opts: "-Xmx1536m -Xms256m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled"
Java jdk 1.5.0_19
Debian Etch 4.0

جري top, ، في كل مرة أقوم بالنقر فوق رابط على موقعي، أرى java عملية ارتفاع استخدام وحدة المعالجة المركزية.إذا كانت صفحة صغيرة، في بعض الأحيان يكون الاستخدام 10% فقط، ولكن في بعض الأحيان على صفحة أكثر تعقيدًا، ترتفع وحدة المعالجة المركزية الخاصة بي إلى 44% (لا تزيد أبدًا، لست متأكدًا من السبب).في هذه الحالة، يمكن أن يستغرق الطلب ما يزيد عن دقائق أثناء تواجد الخادم الخاص بي load average يصعد بشكل مطرد إلى 8 أو أكثر.ويتم هذا فقط من خلال النقر على رابط واحد يؤدي إلى تحميل بعض الطلبات من بعض الخدمات، ولا يوجد شيء معقد للغاية.تبلغ نسبة ذاكرة عملية Java حوالي 20% في معظم الأوقات.

إذا تركت الأمر قليلاً، فإن متوسط ​​التحميل سيعود إلى لا شيء.بالنقر على عدد قليل من الروابط، يصعد مرة أخرى.

أقوم بتشغيل مثيل أمازون صغير للواجهة الأمامية لـ Rails ومثيل كبير لجميع الخدمات.

الآن، من الواضح أن هذا غير مقبول.يمكن لمستخدم واحد رفع متوسط ​​التحميل إلى 8 ومع استخدام شخصين له، فإنه يحافظ على متوسط ​​التحميل طوال مدة استخدامنا للموقع.أتساءل ماذا يمكنني أن أفعل لتفقد ما يحدث؟أنا في حيرة كاملة فيما يتعلق بكيفية تصحيح هذا.(لا يحدث ذلك محليًا عندما أقوم بتشغيل تطبيق Rails من خلال jruby، وليس داخل حاوية Tomcat)

هل يمكن لأي شخص أن ينيرني حول كيفية فحص تطبيق jruby الخاص بي لمعرفة كيف يمكن أن يستخدم مثل هذه الموارد الضخمة؟

لاحظ، لقد لاحظت هذا قليلًا من قبل، على ما يبدو بشكل عشوائي، ولكن الآن، بعد الترقية من Rails 2.2.2 إلى 2.3.5، أراه طوال الوقت ويجعل الموقع غير قابل للاستخدام تمامًا.

أي نصائح حول مكان البحث هي محل تقدير كبير.أنا لا أعرف حتى من أين أبدأ.

لا يوجد حل صحيح

نصائح أخرى

تأكد من عدم وجود أي اتصال غير متوقع بين Tomcat وشيء آخر.سأتحقق في المقام الأول إذا:

  • لا يتواصل وسيط ActiveMQ مع الوسطاء الآخرين في شبكتك.بشكل افتراضي، يبدأ وسيط AMQ في وضع الاكتشاف التلقائي لـ OpenWire.
  • لا تتواصل JGroups/Multicasts بشكل عام مع شيء ما في شبكتك.

قد ينتج هذا التحميل غير الضروري عن معالجة الرسائل الواردة من تطبيق آخر.

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