Приложение Jruby Rails на Tomcat Пики использования процессора - PullRequest
0 голосов
/ 26 февраля 2010

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

Вот мои настройки:

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, я вижу это ВСЕ ВРЕМЯ, и это делает сайт совершенно непригодным для использования.

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

1 Ответ

0 голосов
/ 27 февраля 2010

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

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

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

...