Приложение Jruby Rails на пиках использования ЦП Tomcat

Это также может относиться к ошибке сервера. Это своего рода комбинация конфигурации сервера и кода (я думаю)

Вот моя установка:

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%.

Если я оставлю это на некоторое время, средняя нагрузка снизится до нуля. Щелкнув еще несколько ссылок, вылезает обратно наверх.

Я запускаю небольшой экземпляр Amazon для интерфейса rails и большой экземпляр для всех сервисов.

Сейчас это явно неприемлемо. Один пользователь может довести среднюю нагрузку до 8, а если его используют два человека, он поддерживает эту среднюю нагрузку в течение всего времени использования сайта. Мне интересно, что я могу сделать, чтобы проверить, что происходит? Я в полной растерянности относительно того, как я могу отладить это. (это не происходит локально, когда я запускаю приложение rails через jruby, а не внутри контейнера tomcat)

Может ли кто-нибудь просветить меня, как я могу проверить свое приложение jruby, чтобы узнать, как оно может использовать такие огромные ресурсы?

Обратите внимание, я заметил это немного раньше, казалось бы, случайно, но теперь, после обновления с Rails 2.2.2 до 2.3.5, я вижу это ВСЕ ВРЕМЯ, и это делает сайт совершенно непригодным для использования.

Приветствуются любые советы, где искать. Я даже не знаю, с чего начать.


person brad    schedule 26.02.2010    source источник


Ответы (1)


Убедитесь, что нет неожиданной связи между Tomcat и чем-то еще. Я бы проверил в первую очередь, если:

  • Брокер ActiveMQ не взаимодействует с другими посредниками в вашей сети. По умолчанию брокер AMQ запускается в режиме автоматического обнаружения OpenWire.
  • JGroups/Multicasts обычно не взаимодействуют с чем-либо в вашей сети.

Эта ненужная нагрузка может возникнуть в результате обработки сообщений, поступающих из другого приложения.

person Henryk Konsek    schedule 27.02.2010
comment
Спасибо за совет. Я на самом деле рубиновый парень на фронте, поэтому я все еще работаю над java/activemq, но я посмотрю, когда у меня будет шанс. - person brad; 01.03.2010