Sharing knowledge

Список для проверки при оптимизации Grails приложений

Выкладываю ниже список задач, которые нужно/можно выполнить для оптимизации приложения, написанного на Grails, может кому пригодится.

Тестирование проведённых оптимизаций

Первым делом необходимо разработать критерии проверки, которые позволят оценить эффективность проведённых оптимизаций.

  1. Установить Java Melody плагин для Grails для проведения анализа.
  2. Разработать скрипты для проведения нагрузочного тестирования.
  3. Прогнать скрипты.
  4. Проанализировать результаты Java Melody, выявить узкие места, произвести нужные оптимизации.

Общие оптимизации

Очень часто обновление до последней версии используемых библиотек попутно улучшает производительность.

  1. Обновить Java до последней версии
  2. Обновить Groovy до последней версии.
  3. Обновить Grails до последней версии.
  4. Обновить jQuery до последней версии.
  5. Оптимизировать настройки виртуальной машины Java (например, -server -Xmx270m -Xms270m -XX:MaxPermSize=80m -Xverify:none -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31 -XX:+AggressiveOpts) a. http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html Вообще, по оптимизации JVM написаны целые книги, так что не буду здесь останавливаться.

Оптимизация клиентской части

  1. Настроить кэширование статических ресурсов в Томкате.
  2. Настроить сжатие статических ресурсов в Томкате.
  3. (поставить прокси на nginx для кэширования статических ресурсов ?)
  4. Установить плагины для Firebug, которые оценят производительность клиентской части.
    1. PageSpeed
    2. YSlow
    3. Проанализировать страницы веб-сайта с их помощью
  5. Провести предлагаемые оптимизации.

Оптимизация клиентской части приложений, написанных на Grails

  1. Установить плагин UI Performance
  2. Провести оптимизацию с использованием плагина UI Performance

Оптимизация базы данных

  1. Оптимизировать производительность сервера базы данных (SQL Server) a. http://www.sql-server-performance.com/tips/all_main.aspx a. http://msdn.microsoft.com/en-us/library/ms998577.aspx
  2. Проверить наличие индексов в базе данных, добавить необходимые
  3. Найти неоптимальные запросы в БД, оптимизировать

Оптимизация работы с базой данных

  1. Обновить версию JDBC-драйвера
  2. Настроить кэширование в Hibernate. Ресурсов в сети предостаточно, навскидку вот парочка.

Оптимизация серверной части приложения

  1. Произвести профилирование приложения (использовать Visual VM, YJP Profiler), найти узкие места и оптимизировать их.

Оптимизация серверной части приложения (опционально)

  1. Установить плагин Perf4J для грэйлза
  2. Добавить необходимые счётчики в код
  3. Прогнать нагрузочные тесты, найти узкие места, оптимизировать.

Заключение

В целом, в данном списке нет ничего нового, это всего лишь компиляция публично доступных материалов. Тем не менее, решил это опубликовать, чтобы сэкономить время другим.