Список для проверки при оптимизации Grails приложений
Выкладываю ниже список задач, которые нужно/можно выполнить для оптимизации приложения, написанного на Grails, может кому пригодится.
Тестирование проведённых оптимизаций
Первым делом необходимо разработать критерии проверки, которые позволят оценить эффективность проведённых оптимизаций.
- Установить Java Melody плагин для Grails для проведения анализа.
- Разработать скрипты для проведения нагрузочного тестирования.
- Прогнать скрипты.
- Проанализировать результаты Java Melody, выявить узкие места, произвести нужные оптимизации.
Общие оптимизации
Очень часто обновление до последней версии используемых библиотек попутно улучшает производительность.
- Обновить Java до последней версии
- Обновить Groovy до последней версии.
- Обновить Grails до последней версии.
- Обновить jQuery до последней версии.
- Оптимизировать настройки виртуальной машины 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 написаны целые книги, так что не буду здесь останавливаться.
Оптимизация клиентской части
- Настроить кэширование статических ресурсов в Томкате.
- Настроить сжатие статических ресурсов в Томкате.
- (поставить прокси на nginx для кэширования статических ресурсов ?)
- Установить плагины для Firebug, которые оценят производительность клиентской части.
- PageSpeed
- YSlow
- Проанализировать страницы веб-сайта с их помощью
Провести предлагаемые оптимизации.Оптимизация клиентской части приложений, написанных на Grails
- Установить плагин UI Performance
- Провести оптимизацию с использованием плагина UI Performance
Оптимизация базы данных
- Оптимизировать производительность сервера базы данных (SQL Server)
a. http://www.sql-server-performance.com/tips/all_main.aspx
a. http://msdn.microsoft.com/en-us/library/ms998577.aspx
- Проверить наличие индексов в базе данных, добавить необходимые
- Найти неоптимальные запросы в БД, оптимизировать
Оптимизация работы с базой данных
- Обновить версию JDBC-драйвера
- Настроить кэширование в Hibernate.
Ресурсов в сети предостаточно, навскидку вот парочка.
Оптимизация серверной части приложения
- Произвести профилирование приложения (использовать Visual VM, YJP Profiler), найти узкие места и оптимизировать их.
Оптимизация серверной части приложения (опционально)
- Установить плагин Perf4J для грэйлза
- Добавить необходимые счётчики в код
- Прогнать нагрузочные тесты, найти узкие места, оптимизировать.
Заключение
В целом, в данном списке нет ничего нового, это всего лишь компиляция публично доступных материалов. Тем не менее, решил это опубликовать, чтобы сэкономить время другим.