Со временем производительность приложения Grails снижается - PullRequest
4 голосов
/ 21 мая 2011

Я заметил, что после того, как мое приложение Grails было развернуто в течение примерно 2 недель, производительность значительно снижается , и мне приходится повторно развертывать. Я использую плагин Spring Security и кеширую пользователей. Я склоняюсь к тому, что это как-то связано с размером кеша сессии, но я не уверен, как это проверить.

Звучит так, будто я на правильном пути? Кто-нибудь еще испытал это и сузил проблему? Любая помощь будет великолепна.

Спасибо!

Ответы [ 4 ]

4 голосов
/ 21 мая 2011

Никогда не угадайте, где оптимизировать, это будет неправильно.

Получите дамп кучи и немного профилируйте его ( VisualVM отлично работал для меня).

Это может быть утечка памяти, как это случилось со мной.Какова ваша среда - ОС, веб-сервер, Grails?

3 голосов
/ 21 мая 2011

Я бы порекомендовал получить YourKit (VisualVM имеет ограниченную информацию) и использовать его для профилирования вашего приложения в производстве (если это возможно).

В качестве альтернативы вы можете создать тест производительности (например, с JMeter ) и протестировать производительность компонентов вашего приложения, которые, как вы подозреваете, вызывают снижение производительности.

Мониторинг памяти, процессора, потоков, gc и т. Д. Во время выполнения простых тестов производительности JMeter определенно найдет виновника. Таким образом, вы можете легко повторно протестировать свою систему с течением времени и увидеть, если вы включили новые ошибки «убийства производительности».

Инструменты / сервисы тестирования производительности:

  • JMeter
  • Grinder
  • Селен (Может тест производительности с сеткой селена, хотя hw нужно)
  • Browsermob (Коммерческий, который использует Selenium + Selenium-Grid)
  • NeoLoad от NeoTys (коммерческая, доступна пробная версия)
  • HP Loadrunner (Коммерческий, Крупная рыба на рынке, доступна пробная версия)
2 голосов
/ 21 мая 2011

Я бы также посмотрел, как установить плагин app-info и включить кучу опций (особенно в спящем режиме), чтобы посмотреть, выйдет ли что-то из-под контроля. Может быть что-то, что заполняет сеанс гибернации, но никогда не закрывает транзакцию.

Еще одна область, на которую стоит обратить внимание, это если вы что-то делаете с Groovy движком шаблонов. Это приводит к известной утечке памяти, это не исправимо, если вы не кэшируете класс / результаты. Недавно исправили проблему вокруг этого в нашем приложении. Если вы видите какие-либо постоянные ошибки, это может иметь место.

1 голос
/ 23 мая 2011

Попробуйте установить Javamelody плагин.В нашем случае это помогло найти проблему с GC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...