SlideShare a Scribd company logo
1 of 67
НАСТРОЙКА И ОПТИМИЗАЦИЯ
J2EE ВЫСОКОНАГРУЖЕННЫХ ВЕБ-
ПРИЛОЖЕНИЙ НА ОСНОВАНИИ
ОПЫТА РАЗРАБОТКИ ПОРТАЛА
СБЕРБАНКА
Шамим Ахмед
Ведущий архитектор
AT Consulting
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ПЛАН:
 Причины низкой производительности.
 Общие подходы и методология для оптимизации веб
приложения.
 Оптимизация Веб сервера.
 Оптимизация на стороне клиента.
 Оптимизация на стороне middleware, в том числе
сервер приложения.
 Оптимизация Базы Данных.
2
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ОСОБЕННОСТИ ПОРТАЛА СБЕРБАНКА
 Быстрое внесение изменений в структуру портала,
добавление нового контента без установки релизов.
 Персонализация страницы для конечных пользователей.
 Таргетирование.
 Динамическое построение страниц портала в зависимости от
информации собранной о пользователе (таргетирование,
геолокация и др.).
 Единый портал с поддержкой всех устройств.
3
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ПРИЧИНЫ НИЗКОЙ ПРОИЗВОДИТЕЛЬНОСТИ
 Священная война между контент-менеджерами,
маркетингом и эксплуатацией.
 Не достаточное понимание архитектуры своей системы.
 Технологические - узкие места производительности веб
сервера, сервер приложения и базы данных.
4
Общий проектный план
 Подготовка
к проекту
 Анализ
и разработка
Анализ текущей
ситуации
 Разработка
Разработка
рекомендаций
по оптимизации бизнес
процессов
 Консультации
 Презентация
результатов
7
1 3 5 7Этапы / Время, недели 2 4 6 8
Презентация
Фаза 1
Фаза 2
Фаза 2
9
Причина низкой производительности
ПРИМЕР СИСТЕМНЫХ ТРЕБОВАНИЙ
 Средняя численность активных пользователей > 25000.
 Максимальное TPS > 850.
 Средняя время загрузки страниц < 3 сек.
 Линейная масштабируемость системы.
 Отказоустойчивость.
 Доступность систем 24*7 (99,9%).
 Зашита от XSS и DDoS атак.
 Поддержка IE8 и Opera7.
8
Причина низкой производительности
КАК ЖЕ БЫТЬ В ТАКОЙ СИТУАЦИИ ?
 Дальновидение или one step further.
 Анализ и проектирование системных требования.
 Соглашение (coding convention, data convention).
 Автоматизированное тестирования (Browser acceptance,
Stress test).
9
Жизненный цикл разработки
10
Релиз в UAT Тестирование Верстка widget
Анализ и
подготовка ЧТЗ
Подготовка
дизайн макета
Разработка
widget
Разработка rest
сервиса
Заполнение контента
Причина низкой производительности
СВЯЩЕННАЯ ВОЙНА МЕЖДУ КОНТЕНТ-МЕНЕДЖЕРАМИ,
МАРКЕТИНГОМ И ЭКСПЛУАТАЦИЕЙ.
 Контент-менеджер: Больше usability для введения контента
 Маркетинг: Больше интерактивного контента
 Эксплуатация: Больше производительности портала
11
Причина низкой производительности
НЕ ДОСТАТОЧНОЕ ПОНИМАНИЕ АРХИТЕКТУРЫ
СВОЕЙ СИСТЕМЫ
12
Причина низкой производительности
АРХИТЕКТУРА ВЕБ ПРИЛОЖЕНИЯ
13
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ОБЩИЕ ПОДХОДЫ И МЕТОДОЛОГИЯ ДЛЯ
ОПТИМИЗАЦИИ ВЕБ ПРИЛОЖЕНИЯ
 Определения основных факторов влияющие на
производительность.
 Кэширование всего, что возможно.
 Определение узких мест в ИС.
 Измерение производительности.
15
Общие подходы и методологию для оптимизации веб приложения
ОСНОВНЫЕ ФАКТОРЫ ВЛИЯЮЩИЕ НА
ПРОИЗВОДИТЕЛЬНОСТИ
16
- Время рендеринг страницы в браузер.
- Объём контента в странице.
- Расстояние дата центра от пользователя.
- Количества вызовов для каждой страницы.
T - Технологические или системные узкие места
Общие подходы и методологию для оптимизации веб приложения
КЭШИРОВАНИЕ ВСЕГО, ЧТО ВОЗМОЖНО
 Агрессивная политика кэширования.
 Виды кэширования:
 Кэширование статических ресурсов (js, css) в веб сервер через etag и cache control.
 Кэширование статические блоки в страницах при помощью SCSI.
 Кэширование результата запроса из БД на сервере приложения.
 Кэширование результата идемпотентных методов на сервере приложения.
 Кэширование ресурсов на контент серверах.
 Кэширование результат SQL запроса в БД.
17
Общие подходы и методологию для оптимизации веб приложения
УРОВЕНЬ КЭШИРОВАНИЯ НА ПОРТАЛЕ
СБЕРБАНКА
18
Кэширование статических ресурсов в Nginx
Кэширование шаблонов страницы для портала
Кэширование результатов вызова backend сервиса
Кэширование статических ресурсов на контент сервере
Кэширование hibernate l2
Кэширование таблицы и результатов SQL запроса в БД
Общие подходы и методологию для оптимизации веб приложения
ОПРЕДЕЛЕНИЕ УЗКИХ МЕСТ В ИС
 Путем мониторинга системы.
 Симптомы узких мест:
 Повышенное время отклика от сервера.
 Ошибки http (4хх, 5хх).
 Высокая загрузка ЦП.
 Много открытых соединений.
 Утечки памяти.
 Узкие места в ИС может быть в:
 Веб серверах.
 Сервере приложения.
 Сервере базы данных.
 Ширине канала связи.
19
Общие подходы и методологию для оптимизации веб приложения
ИЗМЕРЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ
 Микро бенчмаркинг Java скрипт кода
 Микро бенчмаркинг rest сервисов, в т.ч. Java методов.
 Смотреть(мониторинг) execution plan sql запросов.
 Вычисление количества read/write операций в БД на каждый
http запрос.
 LOAD TEST, Test Early, Test Often.
20
Общие подходы и методологию для оптимизации веб приложения
ЗАКЛЮЧЕНИЯ:
 Анализируем и проектируем системных требования.
 Обращаем внимание на симптомы узких мест в архитектуре
веб приложения.
 Включаем агрессивное кэширования на всех уровнях.
 Чаще запускаем load test.
21
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ОПТИМИЗАЦИЯ ВЕБ СЕРВЕРА
 Архитектурные решения:
1. Балансировка DNS
2. Использование CDN
3. Использование под домена для статических ресурсов
4. SSI для предоставления статических ресурсов
5. Предоставление всех статических ресурсов из RAM DISK
 Настройки NGINX:
1. Compress все ресурсы таких как js, html, css, img. Compress level 5-7 - оптимально
2. Предоставлять уже заранее сжатые файлы, позволяет быстро отдавать файлы и
также уменьшает нагрузку CPU на сервере nginx.
3. Использовать дистрибутивный кэш (Кэш кластера) если несколько веб серверов
находится на одном кластере
4. Конфигурация worker процесс зависит от количества CPU
22
Оптимизация веб сервера
АРХИТЕКТУРНЫЕ РЕШЕНИЯ
1. Балансировка DNS
23
Оптимизация веб сервера
АРХИТЕКТУРНЫЕ РЕШЕНИЯ
1. Балансировка DNS
2. Использование CDN
24
Оптимизация веб сервера
АРХИТЕКТУРНЫЕ РЕШЕНИЯ
1. Балансировка DNS
2. Использование CDN
3. Использование под домен для статических ресурсов
25
Оптимизация веб сервера
АРХИТЕКТУРНЫЕ РЕШЕНИЯ
1. Балансировка DNS
2. Использование CDN
3. Использование под домена для статических ресурсов (продолжение)
26
Оптимизация веб сервера
АРХИТЕКТУРНЫЕ РЕШЕНИЯ
1. Балансировка DNS
2. Использование CDN
3. Использование под домен для статических ресурсов (продолжение)
4. SSI для предоставления статических ресурсов
27
Оптимизация веб сервера
АРХИТЕКТУРНЫЕ РЕШЕНИЯ
SSI для предоставления статических ресурсов (продолжение)
28
Оптимизация веб сервера
АРХИТЕКТУРНЫЕ РЕШЕНИЯ
1. Балансировка DNS
2. Использование CDN
3. Использование под домен для статических ресурсов (продолжение)
4. SSI для предоставления статических ресурсов
5. Предоставление всех статических ресурсов из RAM DISK
RamDisk – это ПО, которое занимает часть ОЗУ сервера и использует его как
дисковой носитель. Позволяет уменьшать дисковые операции и предоставляет
быстрый доступ к ресурсам.
Альтернатив: SSD, memcache
29
Оптимизация веб сервера
НАСТРОЙКИ NGINX
1. Сжатие Gzip
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types image/svg+xml text/plain text/css application/json application/x-javascript text/xml
application/xml application/xml+rss text/javascript text/json application/javascript;
2. Доставка заранее сжатых gzip файлов
Уменьшает нагрузки на CPU
Увеличивает производительности
компиляции nginx с параметром --with-http_gzip_static_module
Включить параметр gzip_static on;
location ~ ^/(assets|images|javascripts|stylesheets|swfs|system)/
{
gzip_static on;
}
30
Оптимизация веб сервера
НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ)
3. Обработка соединений
Всего соединений = worker_processes x worker_connections
worker_processes auto;
# Определяет количество рабочих процессов. Его лучше устанавливать в auto в новых версиях.
# worker_processes = CPU core тоесть worker_processes = 4
worker_connections 1024;
# Устанавливает максимальное количество соединений одного рабочего процесса. Следует выбирать
значения от 1024 до 4096.
4. Обработка клиентов
Keepalive соединения позволяют избежать необходимости повторного создания
соединения между клиентом и сервером.
keepalive_timeout 30;
# Будет ждать 30 секунд перед закрытием keepalive соединения
keepalive_requests 100;
# Максимальное количество keepalive запросов от одного клиента
Если для страницы количества запросов большее 100, тогда следует увеличит оба эти
параметры, хотя бы во время load test
31
Оптимизация веб сервера
НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ)
5. Настройка операционной системы
6. Конфигурация cache control
32
Количество одновременно открытых файлов в OS:
Файл /etc/security/limits.conf.
* soft nofile 65535
* hard nofile 65535
Команда:
# ulimit –n 65535
Настройка стека:
# ulimit –s 256
location ~ ^/portalserver/static/sb-bundle/widgets/(.+)/css/(.+)(.css)$ {
expires 3h;
add_header 'Access-Control-Allow-Origin' '*’;
modern_browser unlisted;
ancient_browser "MSIE 6.0" "MSIE 7.0" "MSIE 8.0”;
if ($ancient_browser) {
rewrite ^/portalserver/static/sb-bundle/widgets/(.+)/css/(.+)(.css)$ /$2- ie8.css break;
root /mnt/ramdisk/static/sb-bundle/widgets/$1/css/;
} }
Оптимизация веб сервера
НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ)
5. Конфигурация cache control
33
Оптимизация веб сервера
НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ)
5. Конфигурация cache control
34
Оптимизация веб сервера
НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ)
6. Логирование
7. Прочее настройки
35
access_log off;
error_log /var/log/nginx/error.log crit;
#Информация о файлах
#nginx может кэшировать мета данных файлов
open_file_cache max=200000 inactive=20s;
#Если к таким файлам происходит много обращений,
кеширование может значительно ускорить этот процесс.
open_file_cache_valid 30s;
# Определяет через какое время информация будет удалена из
кеша
open_file_cache_min_uses 2;
# Будет кешировать информацию о тех файлах, которые были
использованы хотя бы 2 раза
Кофе-брейк
36
Перерыв на кофе 15 минут
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ОПТИМИЗАЦИЯ НА СТОРОНЕ КЛИЕНТА
 Уменьшить запрос к серверу
 Уменьшить размер страницы
37
Оптимизация на стороне клиента
 Гибридный подход для рендеринга страницы.
1. Часть widget рендерить в браузере и часть в backend (JSP)
2. Поисковой движок плохо сканирует страницы на client side rendering
3. Гибридный подход уменьшает нагрузки на browser
 Lazy loading вызов сервисов из widget.
 Client Side должен заниматься только отображением
данных.
1. Избежать лишних сортировок или фильтраций данных на сервере.
 Уменьшение загрузки не нужных js библиотека в
landing page.
38
Оптимизация на стороне клиента
 Не вызвать rest сервис с параметром current date
time, результат такого запроса не кэшируется.
 Избавится от микро атомарных вызов сервисов,
использовать монолит сервис для получения всех
данных для одного widget.
 Не использовать post запрос, так как результат не
кэшируется – если использование post запроса
обязательно, то формируйте хэш от запроса и
передавать в параметре запроса.
 Minify js и css скриптов.
39
Оптимизация на стороне клиента
 Склеивайте js и css.
 CSS спрайты.
 Группируйте js и css файлов в разных файлах зависит
от группы страниц.
 Используйте асинхронную загрузку JS и CSS.
 Оптимизиция изображения.
40
Оптимизация на стороне клиента
ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЯ
 Примерно 70% объем страницы занимает изображения.
41
Оптимизация на стороне клиента
ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЯ
 Формат фотографией:
 JPEG - уменьшение качества путем уменьшения детализации изображения.
 WebP - разработанный специально для обслуживания изображений в Web’e,
значительно лучше сжимает фотки, чем JPEG.
 PNG и GIF - PNG изображения сохраняются без потери качества и лучше всего
подойдут для иконок и графики. Формат GIF имеет ограниченную палитру, однако
поддерживает анимацию.
42
Оптимизация на стороне клиента
ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЯ
 Удалить все метаданные. Иногда объем такой инфы может
составлять больше половины веса самого изображения.
 Инструменты:
 ImageMagick.
 GraphicsMagick.
 Jpegtran.
 Cwebp - Утилита позволяет преобразовать изображение в формат Webp.
43
Оптимизация на стороне клиента
ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЯ
 Поддержка WebP формата:
 Создаем версии каждого изображения для формата webp.
 Определяем версия браузера посетителя и раздаем изображения.
44
Оптимизация на стороне клиента
ИНСТРУМЕНТЫ
 Google speed test
 Pingdom
 http://www.webpagetest.org/
 Jmeter
 HP Load runner
45
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ОПТИМИЗАЦИЯ НА MIDDLEWARE
 Особое внимания при проектирование rest сервиса:
 Rest сервисы будут доступно из internet
 Единый дата сервис для получения данных из всех справочников
через параметр rest сервиса не лучший вариант.
 Каждый rest сервис должен проверять входные параметры на null,
если все параметры с значениям null не возвращаем данных.
 http://beta.sberbank.ru/portalserver/content/atom/contentRepository/qu
ery?q=SELECT+*+FROM+cmis%3Afolder&searchAllVersions=false&include
AllowableActions=false&includeRelationships=none&maxItems=1000&ski
pCount=0 -- НЕ ДОПУСТИМА
46
Оптимизация на Middleware
 Предоставлять обертку монолит сервисов.
 Ограничивать данные через pagination.
 Сервис должен сортировать и фильтровать данные
для client side, а не наоборот.
 Применять дистрибутивный кэш (ehcache, memcahce
а также hazelcast) для хранения результата запроса из
БД.
47
Оптимизация на Middleware
 Кэшировать результат вызова идемпотентных
сервисов.
 Пользуйтесь CPU L1-L3 cache эффективно.
 Пользуйтесь offheap ОЗУ если массивы данных
большие.
 Пользуйтесь высоко производительный Stax или
VTDXML на месте DOM или SAX.
48
Оптимизация на Middleware
 Применяйте единый framework для логирования или
SL4j фасад.
 Пользуйтесь профилированием для выявления и
устранения блокировки.
 Увеличивайте время сканирования изменения на
log4j2 или logback.xml.
 Конфигурируйте сервер приложения.
49
Оптимизация на Middleware
КОНФИГУРАЦИЯ СЕРВЕР ПРИЛОЖЕНИЯ
 Настройка Http Session
 Настройка Thread pool
 Настройка JDBC Connection pool
 Настройка Java Heap и GC
50
Оптимизация на Middleware
НАСТРОЙКА HTTP SESSION
 Включить cookie.
 Максимальное количество сессий в памяти.
 Session Timeout.
51
Оптимизация на Middleware
НАСТРОЙКА THREAD POOL
 Настройка WebContainer.
 Min и Max Size.
52
Оптимизация на Middleware
КЛЮЧЕВЫЕ МОМЕНТЫ ПРИ НАСТРОЙКЕ
THREAD POOL
 Правило “большее- лучшее” здесь не уместно, потоки
требуют памяти и системных ресурсов.
 Среднее количество потоков = максимальное количество
RPS/количество серверов, threads = 850/16~54.
53
Оптимизация на Middleware
НАСТРОЙКА JDBC CONNECTION POOL
 Одна из важнейших настроек сервера приложения.
 Производительность сильно зависит от данной настройки.
54
Оптимизация на Middleware
НАСТРОЙКА JDBC CONNECTION POOL
 Connection timeout: интервал времени до которого
соединение остается активным.
 Min и Max Connection: Минимальное и максимальное число
соединения в пул.
Max connection * max number of Node in cluster < max connection in DB
 Unused timeout: Максимальное время, в течение
которого не использующееся соединение может
оставаться в пуле.
 Purge policy: всегда оставляем EntirePool, при
возникновении ошибки в соединении весь пул
очищается, это позволяет избавится от неожиданных
ошибок.
55
Оптимизация на Middleware
НАСТРОЙКА JDBC CONNECTION POOL (STUCK)
 Stuck connection: Застрявшие соединение является активным
соединением, которое не отвечает или не возвращался
обратно в пул соединений.
56
Оптимизация на Middleware
НАСТРОЙКА JDBC CONNECTION POOL (STUCK)
 Stuck time interval: Интервал времени, определяет как часто
необходимо проверять stuck соединения.
 Stuck time: если соединение ожидает ответа более 240 сек,
она считается зависшим.
 Stuck threshold: пороговое значения, после которого весь пул
соединения считается зависшим.
57
Оптимизация на Middleware
НАСТРОЙКА JAVA HEAP И GC ПОЛИТИКА
 ONE SIZE DOESN’T FIT ALL.
 Выделить 50% физической оперативной памяти на Java Heap
Size.
 Initial Heap size = Maximum heap size, на пример Xms=16G;
Xmx=16G.
 garbage collection policy :
- gencon
- optthruput
- optavgpause
- subpool
58
Оптимизация на Middleware
ОТКЛЮЧИТЬ НЕНУЖНЫЕ КОМПОНЕНТЫ ИЗ
СЕРВЕР ПРИЛОЖЕНИЯ
 JMS.
 JMX.
 OSGI.
 CDI или ejb3.
 Mail.
59
Оптимизация на MiddleWare
ИНСТРУМЕНТЫ
 Netbeans profiler
 Yourkit
 VisualVM
 JITWatch
 IBM performance monitoring
60
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ОПТИМИЗАЦИЯ БАЗЫ ДАННЫХ
 Выделить справочники для кэширования, например
сущность «Регион» - хороший кандидат для кэширования.
 Настройка Result Cache.
61
sql> show user;
USER is SYS
sql> show parameter result;
NAME TYPE VALUE
-------------------------------------- ----------- ------------------------------
client_result_cache_lag big integer 3000
client_result_cache_size big integer 0
result_cache_max_result integer 5
result_cache_max_size big integer 6560K
result_cache_mode string MANUAL
result_cache_remote_expiration integer 0
Оптимизация Базы данных
 result_cache_max_size: объем памяти, резервируемой для результирующего
набора кэша. По документации Oracle, значение этого параметра не должно
превысить 75% из общего размера shared pool. Рекомендуется выделить 50% памяти
из общего Shared pool.
 result_cache_max_result: параметр указывает, какой процент
result_cache_max_size может использовать один результат запроса. По умолчанию
значение равно 5%.
62
sql> alter system set result_cache_max_size=1024M;
sql> show parameter result;
NAME TYPE VALUE
-------------------------------------- ----------- ------------------------------
client_result_cache_lag big integer 3000
client_result_cache_size big integer 0
result_cache_max_result integer 5
result_cache_max_size big integer 1024M
result_cache_mode string MANUAL
result_cache_remote_expiration integer 0
Оптимизация Базы данных
 alter table TABLE_NAME RESULT_CACHE(MODE FORCE): результат
запроса кэшируется в shared pool, LRU.
 alter table TABLE_NAME cache: кэширует данные таблицы в общем
буферном кэше и не гарантирует что кэш может долго остаться не изменим. Если
появиться новые кэшированные данные система может переписать данную кэш.
 Alter table emp storage (buffer_pool Keep) : кэширует таблицу в пул
буфера и сохраняет дольшее всех
63Результат без кэширования
Оптимизация Базы данных
 Результат после использования alter table TABLE_NAME
RESULT_CACHE(MODE FORCE)
64
Оптимизация Базы данных
ORACLE DATABASE CHANGE NOTIFICATION
 Получить уведомление об DML и DDL операции в объектах
базы данных.
http://docs.oracle.com/cd/E11882_01/java.112/e16548/dbchgn
f.htm#JJDBC28815
 Доступно с релиза 11g
 Хорошо подходит для очистка и обновления result query
cache в middleware.
 Пример использования
http://frommyworkshop.blogspot.ru/2011/01/clearing-
hazelcast-data-grid-cache-with.html
65
Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта
разработки портала Сбербанка
ЗАКЛЮЧЕНИЯ
 При проектирование ИС, необходимо учитывать системные
требования.
 Необходимо мониторит ИС и анализировать симптомы на
низкие производительности.
 При необходимости оптимизировать следующие
прикладные ПО:
 Веб сервер.
 Сервер приложения.
 Клиентская часть.
 Базы данных.
66
67
Обратная связь
bsha@at-consulting.ru
Blog: http://www.frommyworkshop.blogspot.ru
68
Reference
 http://habrahabr.ru/post/95613/ настройка SSI
 http://frommyworkshop.blogspot.ru
 http://www.ruhighload.com
 Google speed test
 http://www.redbooks.ibm.com/abstracts/sg247347.html
 http://habrahabr.ru/company/io/blog/257533/
69
Вопросы
Спасибо

More Related Content

What's hot

Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоАлександр Ежов
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Uptime Community
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...solit
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comOntico
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Ontico
 
Российская СУБД Postgres Pro
Российская СУБД Postgres ProРоссийская СУБД Postgres Pro
Российская СУБД Postgres ProAndrey Fleyta
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Ontico
 
Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016Andrey Karpov
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
HPE adaptive backup and recovery
HPE adaptive backup and recoveryHPE adaptive backup and recovery
HPE adaptive backup and recoveryAnatoliy Arkhipov
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Ontico
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)Ontico
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 

What's hot (19)

Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
Webcluster cases
Webcluster casesWebcluster cases
Webcluster cases
 
02 1c-bitrix-cloud-storage
02 1c-bitrix-cloud-storage02 1c-bitrix-cloud-storage
02 1c-bitrix-cloud-storage
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
 
1c bitrix-cluster-et
1c bitrix-cluster-et1c bitrix-cluster-et
1c bitrix-cluster-et
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Российская СУБД Postgres Pro
Российская СУБД Postgres ProРоссийская СУБД Postgres Pro
Российская СУБД Postgres Pro
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
 
Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
HPE adaptive backup and recovery
HPE adaptive backup and recoveryHPE adaptive backup and recovery
HPE adaptive backup and recovery
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
 
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
MySQL® и MongoDB® - когда что лучше использовать? / Петр Зайцев (Percona)
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
Аудит веб-приложений
Аудит веб-приложенийАудит веб-приложений
Аудит веб-приложений
 

Similar to Tuning HighLoad J2EE web application

1 2 2_1_c-bitrix_kuleshov
1 2 2_1_c-bitrix_kuleshov1 2 2_1_c-bitrix_kuleshov
1 2 2_1_c-bitrix_kuleshovelenae00
 
Высокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureВысокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureAlexander Feschenko
 
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...UNETA
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"Fwdays
 
Кросс-доменная автоматизация (DC-WAN- Campus) - как собрать единую систему, и...
Кросс-доменная автоматизация (DC-WAN- Campus) - как собрать единую систему, и...Кросс-доменная автоматизация (DC-WAN- Campus) - как собрать единую систему, и...
Кросс-доменная автоматизация (DC-WAN- Campus) - как собрать единую систему, и...Cisco Russia
 
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...borovoystudio
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПОDmitry Lazarenko
 
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов ДенисУвеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов ДенисJoomla Secrets
 
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsLEDC 2016
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Выбор платформы для интернет магазина
Выбор платформы для интернет магазинаВыбор платформы для интернет магазина
Выбор платформы для интернет магазинаPetr Mityushkin
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Artur Baranok
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Ontico
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - ПроизводительностьAlexander Demidov
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Ontico
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загорdrupalconf
 
АРМ - платформа разработки проекта "Госархивы СПб"
АРМ - платформа разработки проекта "Госархивы СПб"АРМ - платформа разработки проекта "Госархивы СПб"
АРМ - платформа разработки проекта "Госархивы СПб"devclub
 
Разработка нового сайта компании «Росгосстрах»
Разработка нового сайта компании «Росгосстрах»Разработка нового сайта компании «Росгосстрах»
Разработка нового сайта компании «Росгосстрах»РОСГОССТРАХ
 
Presentation UMI.CMS for developers
Presentation UMI.CMS for developersPresentation UMI.CMS for developers
Presentation UMI.CMS for developersguest3139c8
 

Similar to Tuning HighLoad J2EE web application (20)

1 2 2_1_c-bitrix_kuleshov
1 2 2_1_c-bitrix_kuleshov1 2 2_1_c-bitrix_kuleshov
1 2 2_1_c-bitrix_kuleshov
 
Высокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows AzureВысокопроизводительные приложения на базе Windows Azure
Высокопроизводительные приложения на базе Windows Azure
 
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Кросс-доменная автоматизация (DC-WAN- Campus) - как собрать единую систему, и...
Кросс-доменная автоматизация (DC-WAN- Campus) - как собрать единую систему, и...Кросс-доменная автоматизация (DC-WAN- Campus) - как собрать единую систему, и...
Кросс-доменная автоматизация (DC-WAN- Campus) - как собрать единую систему, и...
 
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
1С-Битрикс: Управление сайтом. Платформа для создания и управления корпоратив...
 
Hl2009 1c Bitrix
Hl2009 1c BitrixHl2009 1c Bitrix
Hl2009 1c Bitrix
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПО
 
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов ДенисУвеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
Увеличение конверсии Вашего сайта за счет ускорения Joomla - Логинов Денис
 
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Выбор платформы для интернет магазина
Выбор платформы для интернет магазинаВыбор платформы для интернет магазина
Выбор платформы для интернет магазина
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загор
 
АРМ - платформа разработки проекта "Госархивы СПб"
АРМ - платформа разработки проекта "Госархивы СПб"АРМ - платформа разработки проекта "Госархивы СПб"
АРМ - платформа разработки проекта "Госархивы СПб"
 
Разработка нового сайта компании «Росгосстрах»
Разработка нового сайта компании «Росгосстрах»Разработка нового сайта компании «Росгосстрах»
Разработка нового сайта компании «Росгосстрах»
 
Presentation UMI.CMS for developers
Presentation UMI.CMS for developersPresentation UMI.CMS for developers
Presentation UMI.CMS for developers
 

Tuning HighLoad J2EE web application

  • 1. НАСТРОЙКА И ОПТИМИЗАЦИЯ J2EE ВЫСОКОНАГРУЖЕННЫХ ВЕБ- ПРИЛОЖЕНИЙ НА ОСНОВАНИИ ОПЫТА РАЗРАБОТКИ ПОРТАЛА СБЕРБАНКА Шамим Ахмед Ведущий архитектор AT Consulting
  • 2. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ПЛАН:  Причины низкой производительности.  Общие подходы и методология для оптимизации веб приложения.  Оптимизация Веб сервера.  Оптимизация на стороне клиента.  Оптимизация на стороне middleware, в том числе сервер приложения.  Оптимизация Базы Данных. 2
  • 3. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ОСОБЕННОСТИ ПОРТАЛА СБЕРБАНКА  Быстрое внесение изменений в структуру портала, добавление нового контента без установки релизов.  Персонализация страницы для конечных пользователей.  Таргетирование.  Динамическое построение страниц портала в зависимости от информации собранной о пользователе (таргетирование, геолокация и др.).  Единый портал с поддержкой всех устройств. 3
  • 4. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ПРИЧИНЫ НИЗКОЙ ПРОИЗВОДИТЕЛЬНОСТИ  Священная война между контент-менеджерами, маркетингом и эксплуатацией.  Не достаточное понимание архитектуры своей системы.  Технологические - узкие места производительности веб сервера, сервер приложения и базы данных. 4
  • 5. Общий проектный план  Подготовка к проекту  Анализ и разработка Анализ текущей ситуации  Разработка Разработка рекомендаций по оптимизации бизнес процессов  Консультации  Презентация результатов 7 1 3 5 7Этапы / Время, недели 2 4 6 8 Презентация Фаза 1 Фаза 2 Фаза 2 9
  • 6. Причина низкой производительности ПРИМЕР СИСТЕМНЫХ ТРЕБОВАНИЙ  Средняя численность активных пользователей > 25000.  Максимальное TPS > 850.  Средняя время загрузки страниц < 3 сек.  Линейная масштабируемость системы.  Отказоустойчивость.  Доступность систем 24*7 (99,9%).  Зашита от XSS и DDoS атак.  Поддержка IE8 и Opera7. 8
  • 7. Причина низкой производительности КАК ЖЕ БЫТЬ В ТАКОЙ СИТУАЦИИ ?  Дальновидение или one step further.  Анализ и проектирование системных требования.  Соглашение (coding convention, data convention).  Автоматизированное тестирования (Browser acceptance, Stress test). 9
  • 8. Жизненный цикл разработки 10 Релиз в UAT Тестирование Верстка widget Анализ и подготовка ЧТЗ Подготовка дизайн макета Разработка widget Разработка rest сервиса Заполнение контента
  • 9. Причина низкой производительности СВЯЩЕННАЯ ВОЙНА МЕЖДУ КОНТЕНТ-МЕНЕДЖЕРАМИ, МАРКЕТИНГОМ И ЭКСПЛУАТАЦИЕЙ.  Контент-менеджер: Больше usability для введения контента  Маркетинг: Больше интерактивного контента  Эксплуатация: Больше производительности портала 11
  • 10. Причина низкой производительности НЕ ДОСТАТОЧНОЕ ПОНИМАНИЕ АРХИТЕКТУРЫ СВОЕЙ СИСТЕМЫ 12
  • 12. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ОБЩИЕ ПОДХОДЫ И МЕТОДОЛОГИЯ ДЛЯ ОПТИМИЗАЦИИ ВЕБ ПРИЛОЖЕНИЯ  Определения основных факторов влияющие на производительность.  Кэширование всего, что возможно.  Определение узких мест в ИС.  Измерение производительности. 15
  • 13. Общие подходы и методологию для оптимизации веб приложения ОСНОВНЫЕ ФАКТОРЫ ВЛИЯЮЩИЕ НА ПРОИЗВОДИТЕЛЬНОСТИ 16 - Время рендеринг страницы в браузер. - Объём контента в странице. - Расстояние дата центра от пользователя. - Количества вызовов для каждой страницы. T - Технологические или системные узкие места
  • 14. Общие подходы и методологию для оптимизации веб приложения КЭШИРОВАНИЕ ВСЕГО, ЧТО ВОЗМОЖНО  Агрессивная политика кэширования.  Виды кэширования:  Кэширование статических ресурсов (js, css) в веб сервер через etag и cache control.  Кэширование статические блоки в страницах при помощью SCSI.  Кэширование результата запроса из БД на сервере приложения.  Кэширование результата идемпотентных методов на сервере приложения.  Кэширование ресурсов на контент серверах.  Кэширование результат SQL запроса в БД. 17
  • 15. Общие подходы и методологию для оптимизации веб приложения УРОВЕНЬ КЭШИРОВАНИЯ НА ПОРТАЛЕ СБЕРБАНКА 18 Кэширование статических ресурсов в Nginx Кэширование шаблонов страницы для портала Кэширование результатов вызова backend сервиса Кэширование статических ресурсов на контент сервере Кэширование hibernate l2 Кэширование таблицы и результатов SQL запроса в БД
  • 16. Общие подходы и методологию для оптимизации веб приложения ОПРЕДЕЛЕНИЕ УЗКИХ МЕСТ В ИС  Путем мониторинга системы.  Симптомы узких мест:  Повышенное время отклика от сервера.  Ошибки http (4хх, 5хх).  Высокая загрузка ЦП.  Много открытых соединений.  Утечки памяти.  Узкие места в ИС может быть в:  Веб серверах.  Сервере приложения.  Сервере базы данных.  Ширине канала связи. 19
  • 17. Общие подходы и методологию для оптимизации веб приложения ИЗМЕРЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ  Микро бенчмаркинг Java скрипт кода  Микро бенчмаркинг rest сервисов, в т.ч. Java методов.  Смотреть(мониторинг) execution plan sql запросов.  Вычисление количества read/write операций в БД на каждый http запрос.  LOAD TEST, Test Early, Test Often. 20
  • 18. Общие подходы и методологию для оптимизации веб приложения ЗАКЛЮЧЕНИЯ:  Анализируем и проектируем системных требования.  Обращаем внимание на симптомы узких мест в архитектуре веб приложения.  Включаем агрессивное кэширования на всех уровнях.  Чаще запускаем load test. 21
  • 19. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ОПТИМИЗАЦИЯ ВЕБ СЕРВЕРА  Архитектурные решения: 1. Балансировка DNS 2. Использование CDN 3. Использование под домена для статических ресурсов 4. SSI для предоставления статических ресурсов 5. Предоставление всех статических ресурсов из RAM DISK  Настройки NGINX: 1. Compress все ресурсы таких как js, html, css, img. Compress level 5-7 - оптимально 2. Предоставлять уже заранее сжатые файлы, позволяет быстро отдавать файлы и также уменьшает нагрузку CPU на сервере nginx. 3. Использовать дистрибутивный кэш (Кэш кластера) если несколько веб серверов находится на одном кластере 4. Конфигурация worker процесс зависит от количества CPU 22
  • 20. Оптимизация веб сервера АРХИТЕКТУРНЫЕ РЕШЕНИЯ 1. Балансировка DNS 23
  • 21. Оптимизация веб сервера АРХИТЕКТУРНЫЕ РЕШЕНИЯ 1. Балансировка DNS 2. Использование CDN 24
  • 22. Оптимизация веб сервера АРХИТЕКТУРНЫЕ РЕШЕНИЯ 1. Балансировка DNS 2. Использование CDN 3. Использование под домен для статических ресурсов 25
  • 23. Оптимизация веб сервера АРХИТЕКТУРНЫЕ РЕШЕНИЯ 1. Балансировка DNS 2. Использование CDN 3. Использование под домена для статических ресурсов (продолжение) 26
  • 24. Оптимизация веб сервера АРХИТЕКТУРНЫЕ РЕШЕНИЯ 1. Балансировка DNS 2. Использование CDN 3. Использование под домен для статических ресурсов (продолжение) 4. SSI для предоставления статических ресурсов 27
  • 25. Оптимизация веб сервера АРХИТЕКТУРНЫЕ РЕШЕНИЯ SSI для предоставления статических ресурсов (продолжение) 28
  • 26. Оптимизация веб сервера АРХИТЕКТУРНЫЕ РЕШЕНИЯ 1. Балансировка DNS 2. Использование CDN 3. Использование под домен для статических ресурсов (продолжение) 4. SSI для предоставления статических ресурсов 5. Предоставление всех статических ресурсов из RAM DISK RamDisk – это ПО, которое занимает часть ОЗУ сервера и использует его как дисковой носитель. Позволяет уменьшать дисковые операции и предоставляет быстрый доступ к ресурсам. Альтернатив: SSD, memcache 29
  • 27. Оптимизация веб сервера НАСТРОЙКИ NGINX 1. Сжатие Gzip gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types image/svg+xml text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript text/json application/javascript; 2. Доставка заранее сжатых gzip файлов Уменьшает нагрузки на CPU Увеличивает производительности компиляции nginx с параметром --with-http_gzip_static_module Включить параметр gzip_static on; location ~ ^/(assets|images|javascripts|stylesheets|swfs|system)/ { gzip_static on; } 30
  • 28. Оптимизация веб сервера НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ) 3. Обработка соединений Всего соединений = worker_processes x worker_connections worker_processes auto; # Определяет количество рабочих процессов. Его лучше устанавливать в auto в новых версиях. # worker_processes = CPU core тоесть worker_processes = 4 worker_connections 1024; # Устанавливает максимальное количество соединений одного рабочего процесса. Следует выбирать значения от 1024 до 4096. 4. Обработка клиентов Keepalive соединения позволяют избежать необходимости повторного создания соединения между клиентом и сервером. keepalive_timeout 30; # Будет ждать 30 секунд перед закрытием keepalive соединения keepalive_requests 100; # Максимальное количество keepalive запросов от одного клиента Если для страницы количества запросов большее 100, тогда следует увеличит оба эти параметры, хотя бы во время load test 31
  • 29. Оптимизация веб сервера НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ) 5. Настройка операционной системы 6. Конфигурация cache control 32 Количество одновременно открытых файлов в OS: Файл /etc/security/limits.conf. * soft nofile 65535 * hard nofile 65535 Команда: # ulimit –n 65535 Настройка стека: # ulimit –s 256 location ~ ^/portalserver/static/sb-bundle/widgets/(.+)/css/(.+)(.css)$ { expires 3h; add_header 'Access-Control-Allow-Origin' '*’; modern_browser unlisted; ancient_browser "MSIE 6.0" "MSIE 7.0" "MSIE 8.0”; if ($ancient_browser) { rewrite ^/portalserver/static/sb-bundle/widgets/(.+)/css/(.+)(.css)$ /$2- ie8.css break; root /mnt/ramdisk/static/sb-bundle/widgets/$1/css/; } }
  • 30. Оптимизация веб сервера НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ) 5. Конфигурация cache control 33
  • 31. Оптимизация веб сервера НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ) 5. Конфигурация cache control 34
  • 32. Оптимизация веб сервера НАСТРОЙКИ NGINX (ПРОДОЛЖЕНИЕ) 6. Логирование 7. Прочее настройки 35 access_log off; error_log /var/log/nginx/error.log crit; #Информация о файлах #nginx может кэшировать мета данных файлов open_file_cache max=200000 inactive=20s; #Если к таким файлам происходит много обращений, кеширование может значительно ускорить этот процесс. open_file_cache_valid 30s; # Определяет через какое время информация будет удалена из кеша open_file_cache_min_uses 2; # Будет кешировать информацию о тех файлах, которые были использованы хотя бы 2 раза
  • 34. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ОПТИМИЗАЦИЯ НА СТОРОНЕ КЛИЕНТА  Уменьшить запрос к серверу  Уменьшить размер страницы 37
  • 35. Оптимизация на стороне клиента  Гибридный подход для рендеринга страницы. 1. Часть widget рендерить в браузере и часть в backend (JSP) 2. Поисковой движок плохо сканирует страницы на client side rendering 3. Гибридный подход уменьшает нагрузки на browser  Lazy loading вызов сервисов из widget.  Client Side должен заниматься только отображением данных. 1. Избежать лишних сортировок или фильтраций данных на сервере.  Уменьшение загрузки не нужных js библиотека в landing page. 38
  • 36. Оптимизация на стороне клиента  Не вызвать rest сервис с параметром current date time, результат такого запроса не кэшируется.  Избавится от микро атомарных вызов сервисов, использовать монолит сервис для получения всех данных для одного widget.  Не использовать post запрос, так как результат не кэшируется – если использование post запроса обязательно, то формируйте хэш от запроса и передавать в параметре запроса.  Minify js и css скриптов. 39
  • 37. Оптимизация на стороне клиента  Склеивайте js и css.  CSS спрайты.  Группируйте js и css файлов в разных файлах зависит от группы страниц.  Используйте асинхронную загрузку JS и CSS.  Оптимизиция изображения. 40
  • 38. Оптимизация на стороне клиента ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЯ  Примерно 70% объем страницы занимает изображения. 41
  • 39. Оптимизация на стороне клиента ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЯ  Формат фотографией:  JPEG - уменьшение качества путем уменьшения детализации изображения.  WebP - разработанный специально для обслуживания изображений в Web’e, значительно лучше сжимает фотки, чем JPEG.  PNG и GIF - PNG изображения сохраняются без потери качества и лучше всего подойдут для иконок и графики. Формат GIF имеет ограниченную палитру, однако поддерживает анимацию. 42
  • 40. Оптимизация на стороне клиента ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЯ  Удалить все метаданные. Иногда объем такой инфы может составлять больше половины веса самого изображения.  Инструменты:  ImageMagick.  GraphicsMagick.  Jpegtran.  Cwebp - Утилита позволяет преобразовать изображение в формат Webp. 43
  • 41. Оптимизация на стороне клиента ОПТИМИЗАЦИЯ ИЗОБРАЖЕНИЯ  Поддержка WebP формата:  Создаем версии каждого изображения для формата webp.  Определяем версия браузера посетителя и раздаем изображения. 44
  • 42. Оптимизация на стороне клиента ИНСТРУМЕНТЫ  Google speed test  Pingdom  http://www.webpagetest.org/  Jmeter  HP Load runner 45
  • 43. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ОПТИМИЗАЦИЯ НА MIDDLEWARE  Особое внимания при проектирование rest сервиса:  Rest сервисы будут доступно из internet  Единый дата сервис для получения данных из всех справочников через параметр rest сервиса не лучший вариант.  Каждый rest сервис должен проверять входные параметры на null, если все параметры с значениям null не возвращаем данных.  http://beta.sberbank.ru/portalserver/content/atom/contentRepository/qu ery?q=SELECT+*+FROM+cmis%3Afolder&searchAllVersions=false&include AllowableActions=false&includeRelationships=none&maxItems=1000&ski pCount=0 -- НЕ ДОПУСТИМА 46
  • 44. Оптимизация на Middleware  Предоставлять обертку монолит сервисов.  Ограничивать данные через pagination.  Сервис должен сортировать и фильтровать данные для client side, а не наоборот.  Применять дистрибутивный кэш (ehcache, memcahce а также hazelcast) для хранения результата запроса из БД. 47
  • 45. Оптимизация на Middleware  Кэшировать результат вызова идемпотентных сервисов.  Пользуйтесь CPU L1-L3 cache эффективно.  Пользуйтесь offheap ОЗУ если массивы данных большие.  Пользуйтесь высоко производительный Stax или VTDXML на месте DOM или SAX. 48
  • 46. Оптимизация на Middleware  Применяйте единый framework для логирования или SL4j фасад.  Пользуйтесь профилированием для выявления и устранения блокировки.  Увеличивайте время сканирования изменения на log4j2 или logback.xml.  Конфигурируйте сервер приложения. 49
  • 47. Оптимизация на Middleware КОНФИГУРАЦИЯ СЕРВЕР ПРИЛОЖЕНИЯ  Настройка Http Session  Настройка Thread pool  Настройка JDBC Connection pool  Настройка Java Heap и GC 50
  • 48. Оптимизация на Middleware НАСТРОЙКА HTTP SESSION  Включить cookie.  Максимальное количество сессий в памяти.  Session Timeout. 51
  • 49. Оптимизация на Middleware НАСТРОЙКА THREAD POOL  Настройка WebContainer.  Min и Max Size. 52
  • 50. Оптимизация на Middleware КЛЮЧЕВЫЕ МОМЕНТЫ ПРИ НАСТРОЙКЕ THREAD POOL  Правило “большее- лучшее” здесь не уместно, потоки требуют памяти и системных ресурсов.  Среднее количество потоков = максимальное количество RPS/количество серверов, threads = 850/16~54. 53
  • 51. Оптимизация на Middleware НАСТРОЙКА JDBC CONNECTION POOL  Одна из важнейших настроек сервера приложения.  Производительность сильно зависит от данной настройки. 54
  • 52. Оптимизация на Middleware НАСТРОЙКА JDBC CONNECTION POOL  Connection timeout: интервал времени до которого соединение остается активным.  Min и Max Connection: Минимальное и максимальное число соединения в пул. Max connection * max number of Node in cluster < max connection in DB  Unused timeout: Максимальное время, в течение которого не использующееся соединение может оставаться в пуле.  Purge policy: всегда оставляем EntirePool, при возникновении ошибки в соединении весь пул очищается, это позволяет избавится от неожиданных ошибок. 55
  • 53. Оптимизация на Middleware НАСТРОЙКА JDBC CONNECTION POOL (STUCK)  Stuck connection: Застрявшие соединение является активным соединением, которое не отвечает или не возвращался обратно в пул соединений. 56
  • 54. Оптимизация на Middleware НАСТРОЙКА JDBC CONNECTION POOL (STUCK)  Stuck time interval: Интервал времени, определяет как часто необходимо проверять stuck соединения.  Stuck time: если соединение ожидает ответа более 240 сек, она считается зависшим.  Stuck threshold: пороговое значения, после которого весь пул соединения считается зависшим. 57
  • 55. Оптимизация на Middleware НАСТРОЙКА JAVA HEAP И GC ПОЛИТИКА  ONE SIZE DOESN’T FIT ALL.  Выделить 50% физической оперативной памяти на Java Heap Size.  Initial Heap size = Maximum heap size, на пример Xms=16G; Xmx=16G.  garbage collection policy : - gencon - optthruput - optavgpause - subpool 58
  • 56. Оптимизация на Middleware ОТКЛЮЧИТЬ НЕНУЖНЫЕ КОМПОНЕНТЫ ИЗ СЕРВЕР ПРИЛОЖЕНИЯ  JMS.  JMX.  OSGI.  CDI или ejb3.  Mail. 59
  • 57. Оптимизация на MiddleWare ИНСТРУМЕНТЫ  Netbeans profiler  Yourkit  VisualVM  JITWatch  IBM performance monitoring 60
  • 58. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ОПТИМИЗАЦИЯ БАЗЫ ДАННЫХ  Выделить справочники для кэширования, например сущность «Регион» - хороший кандидат для кэширования.  Настройка Result Cache. 61 sql> show user; USER is SYS sql> show parameter result; NAME TYPE VALUE -------------------------------------- ----------- ------------------------------ client_result_cache_lag big integer 3000 client_result_cache_size big integer 0 result_cache_max_result integer 5 result_cache_max_size big integer 6560K result_cache_mode string MANUAL result_cache_remote_expiration integer 0
  • 59. Оптимизация Базы данных  result_cache_max_size: объем памяти, резервируемой для результирующего набора кэша. По документации Oracle, значение этого параметра не должно превысить 75% из общего размера shared pool. Рекомендуется выделить 50% памяти из общего Shared pool.  result_cache_max_result: параметр указывает, какой процент result_cache_max_size может использовать один результат запроса. По умолчанию значение равно 5%. 62 sql> alter system set result_cache_max_size=1024M; sql> show parameter result; NAME TYPE VALUE -------------------------------------- ----------- ------------------------------ client_result_cache_lag big integer 3000 client_result_cache_size big integer 0 result_cache_max_result integer 5 result_cache_max_size big integer 1024M result_cache_mode string MANUAL result_cache_remote_expiration integer 0
  • 60. Оптимизация Базы данных  alter table TABLE_NAME RESULT_CACHE(MODE FORCE): результат запроса кэшируется в shared pool, LRU.  alter table TABLE_NAME cache: кэширует данные таблицы в общем буферном кэше и не гарантирует что кэш может долго остаться не изменим. Если появиться новые кэшированные данные система может переписать данную кэш.  Alter table emp storage (buffer_pool Keep) : кэширует таблицу в пул буфера и сохраняет дольшее всех 63Результат без кэширования
  • 61. Оптимизация Базы данных  Результат после использования alter table TABLE_NAME RESULT_CACHE(MODE FORCE) 64
  • 62. Оптимизация Базы данных ORACLE DATABASE CHANGE NOTIFICATION  Получить уведомление об DML и DDL операции в объектах базы данных. http://docs.oracle.com/cd/E11882_01/java.112/e16548/dbchgn f.htm#JJDBC28815  Доступно с релиза 11g  Хорошо подходит для очистка и обновления result query cache в middleware.  Пример использования http://frommyworkshop.blogspot.ru/2011/01/clearing- hazelcast-data-grid-cache-with.html 65
  • 63. Настройка и оптимизация J2EE высоконагруженных веб-приложений на основании опыта разработки портала Сбербанка ЗАКЛЮЧЕНИЯ  При проектирование ИС, необходимо учитывать системные требования.  Необходимо мониторит ИС и анализировать симптомы на низкие производительности.  При необходимости оптимизировать следующие прикладные ПО:  Веб сервер.  Сервер приложения.  Клиентская часть.  Базы данных. 66
  • 65. 68 Reference  http://habrahabr.ru/post/95613/ настройка SSI  http://frommyworkshop.blogspot.ru  http://www.ruhighload.com  Google speed test  http://www.redbooks.ibm.com/abstracts/sg247347.html  http://habrahabr.ru/company/io/blog/257533/