SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Настройка и
оптимизация
высоконагруженных
J2EE веб-
приложений
Шамим Ахмед
Ведущий архитектор
AT Consulting
O нас : AT Consulting
Компания AT Consulting –
один из лидирующих
поставщиков ИТ-услуг,
оперирующий на тер-ритории
Российской Федерации и
стран СНГ, начиная с 2001 года
КЛЮЧЕВЫЕ ВЕРТИКАЛИ
Телекоммуникационный сектор |
Финансовый сектор |
Государственный сектор |
Топливно-энергетический сектор
СПЕЦИАЛИЗАЦИЯ
Внедрение и сопровождение
сложных информационных
систем класса ERP | CRM | DWH |
ECM | АБС | Billing | SOA и т.д.|
Cтратегический и операционный
бизнес-консалтинг | Управление
проектами и ИТ-аутсорсинг
ПАРТНЕРСТВО
С МИРОВЫМИ ЛИДЕРАМИ IT-
РЫНКА
SAP | Oracle | SAS | IBM | Microsoft	|
EMC	| Informatica | MicroStrategy	|
Prognoz | Hewlett	Packard	| Avaya	|
Motorola	Solutions	| Hitachi	| Infotecs	|
Kraftway	| 1C	и	т.д.
2 000+ КОНСУЛЬТАНТОВ,
обладающих опытом реализации
крупнейших по масштабам ИТ-
проектов
ЛИДИРУЮЩАЯ ПОЗИЦИЯ
среди крупнейших ИТ-
интеграторов в России за 2009,
2010, 2011, 2012, 2013 и 2014 г.
Курс валюты 2014 года
Рост трафика Сбербанка
7,9	млн
График роста RPS
886
790
Время отклика в
секундах
45%	error	4/5xx
60%	error	http	502	 27
11
Системные требования
Требования Было Максимальное
в Декабрe 2014
Стало
Максимальное RPS 400 886 1100
Посетители онлайн 11000 25338 26000
Среднее время
загрузки страниц
< 5	сек. < 3 сек.
Доступность систем 24*7	
(99,9%)
24*7	
(99,9%)
Поддержка browser IE8,	opera7 IE8,	opera7
Отказоустойчивость да да
Отсутствие CDN
Отсутствует возможность масштабировать
ландшафт
В доклада будет
рассказано
Оптимизация веб сервера
Оптимизация на стороне клиента
Оптимизация на стороне middleware
Оптимизация Базы Данных
Подходы и методология для оптимизации
веб приложения
Причины низкой производительности1
2
3
4
5
6
Особенности портала
Сбербанка
Таргетирование
Персонализация страницы для конечных
пользователей
Быстрое внесение изменений в структуру
портала без установки релизов
Единый портал с поддержкой всех устройств
Под капотом портала
Portal engine BackBase CXP
APP framework Spring
Search Solr
ORM MyBatis, Hibernate
JVM IBM JVM 9
Frontend framework Jquery, React, Bootstrap 3
Cache Ehсache
RDBMS Oracle 11gR2
Automation Jenkins, Ansible, Flyway
111
33
1
Front end app server
RHEL 6.5, IBM WS 8.5
2 Nginx
RHEL 6.5
3
Back end app server
RHEL 6.5, IBM WS 8.5
2 111
33
2
RAID	5
60	GB
PROD DR
Oracle	DB Oracle	DB
Heartbeat VLAN
Balance
VLAN
Balance
VLAN
Servers
VLAN
Servers
VLAN
Oracle Data Guard
HW Load Balancer
RAID	5
60	GB
Web&AppTierDBTier
Диаграммы
развертывания
Причины низкой
производительности
Организационные - священная война между контент-
менеджерами, маркетингом и эксплуатацией
Технологические - узкие места производительности
веб сервера, сервер приложения и базы данных
Прикладные – некачественный программный код
HolyWar
Контент-менеджер: Больше
usability для введения контента
Маркетинг: Больше
интерактивного контента
Эксплуатация: Больше
производительности
портала
Pick	two
Основные факторы,
влияющие на
производительность
Объём контента в странице
Географическое	расположения,	тип	сети	(Lan,	
wifi) пользователя
Время рендеринга страницы в браузер
Технологические или системные узкие места1
2
3
4
Количество вызовов для каждой страницы5
Методология для
оптимизации веб
приложения
Измерение производительности
Кэширование всего, что возможно
Определение узких мест в ИС
Определение основных факторов, влияющих
на производительность
1
2
3
4
Определение узких мест
в ИС
Симптомы узких мест
Путем мониторинга системы1
2
Узкие места в ИС могут быть в3
1 Повышенное время отклика от сервера
2 Ошибки http (4хх, 5хх)
3 Высокая загрузка ЦП
4 Много открытых соединений
5 Утечки памяти
1 Веб серверах
3 Сервере базы данных
2 Сервере приложения
3 Ширине канала связи
Основные проблемы на
сайте Сбербанка
Много неоптимизированных изображений в
страницах
Не сгруппированные по страницам толстые
JS и CSS файлы
Большая нагрузка на сервере приложений и
контент сервере, а также thread lock
Некоторые widget`ы загружали больше 3х
картинок сразу для адаптивности сайта
Большие hit rate в основных страницах
сайта, hit > 175
1
2
3
4
5
Основные проблемы на
сайте Сбербанка
Встроенная геолокализация на основе
данных из RDBMS
Много застрявших (stuck) соединений в БД
Targetting анонимных пользователей через
Google аналитику
Низкая пропускная способность HW load
balancer
Обработка бизнес логики на клиентской
стороне
Высокая нагрузка на CPU (cpu burning) в веб
серверах
6
7
8
9
10
11
Оптимизация веб сервера
В первый день войны
Уменьшали уровень сжатия файлов до 6,
gzip_comp_level 6
Оставляли уровень логирования на error
Увеличили количество кэшированных
метаданных файлов (open_file_cache max=60000)
Загрузили все статические ресурсы в RAM
DISK, у нас не было memcache
Доставка заранее сжатых gzip файлов
Все изображения для landing page (35) положили
в web server Nginx
1
2
3
4
5
6
Результат после первой
оптимизации
17%	error	4/5xx
45%	error	4/5xx
27
11
Оптимизация веб сервера
SSI для предоставления статических ресурсов
Оптимизация веб сервера
Балансировка DNS
Оптимизация веб сервера
Использование поддомен (sub domain) для статических
ресурсов
Оптимизация веб сервера
Использование поддомен (sub domain) для статических
ресурсов
Результат
17%	error	4/5xx
45%	error	4/5xx
27
11
0% error
Оптимизация веб сервера
(Геолокация)
Перенос механизма геолокации с портала на Nginx
Nginx модуль ngx_http_geo_module1
ipgeobase базы со сайта ipgeobase.ru2
Почему не кэшировать
всю страницу? Почему?
Сайт динмаический отобразил курс валюты,
котировки для всех территориальных банков
Пользовательская персонализация widget`ов не
позволяет кэшировать 1/3 страницы
Оптимизация веб сервера
Поддержка WebP формата
Создаем версию каждого изображения для
формата webp
Определяем версия браузера посетителя и
раздаем изображения
2
1
Оптимизация на стороне
клиента
Client Side должен заниматься только
отображением данных
Гибридный подход для рендеринга страницы1
2
Удалили лишних сортировок или фильтраций
данных на клиенте
3
1
2
Группировали css, js файлы в одном по
группам страницы, чтобы размер файлов
не сильно увеличилось
4
Часть widget рендерить в браузере и часть в backend (JSP)
Гибридный подход уменьшает нагрузки на browser
Оптимизация на стороне
клиента
Не вызывать rest сервис с параметром
currentdate time, результат такого запроса не
кэшируется
5
Избавиться от микроатомарных вызов
сервисов, использовать монолит-сервис для
получения всех данных для одного widget
6
Оптимизация на стороне
Middleware
Особое внимание при проектировании REST сервиса
REST сервисы будут доступны из internet
Единый дата сервис для получения данных из
всех справочников через параметр REST
сервиса - не лучший вариант
Каждый REST сервис должен проверять
входные параметры на null, если все параметры
со значениями null, мы не возвращаем данные
Оптимизация на стороне
Middleware
http://beta.sberbank.ru/portalserver/content/atom/cont
entRepository/query?q=SELECT+*+FROM+cmis%3Afold
e r&searchAllVersions=false&includeAllowableActions=false
&includeRelationships=none&maxItems=1000&skipCount
=0 -- НЕ ДОПУСТИМА
Предоставлять обертку монолит сервисов
Ограничивать данные через pagination
Сервис должен сортировать и фильтровать данные
для client side, а не наоборот
Оптимизация на стороне
Middleware
Кэшировать результат вызова идемпотентных
сервисов
Пользуйтесь CPU L1-L3 cache эффективно
Пользуйтесь offheap ОЗУ, когда массивы данных
большие
Пользуйтесь высокопроизводительным Stax или
VTDXML на месте DOM или SAX
Применяйте единый framework для логирования или
SL4j фасад
Оптимизация на стороне
Middleware
Увеличивайте время сканирования изменения на
log4j2 или logback.xml
Пользуйтесь профилированием для выявления и
устранения блокировки
Конфигурируйте сервер приложения
Оптимизация Базы
данных
Выделить справочники для кэширования, например
сущность «Регион», «КЛДР» или «Шаблон страницы»
Настройка Cache (Oracle Result Cache)
alter table TABLE_NAME RESULT_CACHE(MODE
FORCE)
alter table TABLE_NAME cache
Alter table emp storage (buffer_pool Keep)
Оптимизация Базы
данных
Oracle Database change notification
Получить уведомление об DML и DDL операции в
объектах базы данных
Доступно с релиза 11g
Хорошо подходит для очистки или обновления
кэша в middleware
Уровень кэширования
на портале Сбербанка
Кэширование
статических
ресурсов в Nginx
Кэширование
шаблонов
страницы для
портала
Кэширование
результатов
вызова backend
сервиса
Кэширование
статических
ресурсов на
контент сервере
Кэширование
hibernate l2
Кэширование
таблицы и
результатов SQL
запроса в БД
Итоги
27.01.15 03.02.15 05.02.15 13.02.15
Максимальное количество RPS
791 831 1032 1773
Требования 886
Полное отображение страницы (в секундах)
3.3 3 2.2 2.7
Требования 3
Инструменты
Cloud
> LoadStorm
> Flood.io
Test segment
> HP Load
runner
> Jmeter
Miscellaneous
> Google speed
test
> pingdom
Заключения
ü Необходимо мониторить ИС и анализировать
симптомы низкой производительности.
ü Необходимо анализировать нагрузки систем.
ü Определить и оптимизировать наиболее
подверженные нагрузке участки.
ü Так же очень важно - это понимание
архитектуры своей системы
Обратная связь
frommyworkshop.blogspot.ru
bsha@at-consulting.ru
Вопросы?

Weitere ähnliche Inhalte

Was ist angesagt?

Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
Andrew Avdeev
 
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Fwdays
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Ontico
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Ontico
 

Was ist angesagt? (19)

Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
 
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
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"
 
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
Дмитрий Меньшиков "Топ-10 фейлов на реальном highload проекте"
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
1c bitrix-cluster-et
1c bitrix-cluster-et1c bitrix-cluster-et
1c bitrix-cluster-et
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)
 
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
Игнат Корчагин "Как Cloudflare помогает справиться с крупнейшими атаками в Сети"
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016Конференция по программным решениям HPE 2016
Конференция по программным решениям HPE 2016
 
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 

Andere mochten auch

Clean architecture
Clean architectureClean architecture
Clean architecture
andbed
 
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache KafkaExploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Lightbend
 
Building Streaming And Fast Data Applications With Spark, Mesos, Akka, Cassan...
Building Streaming And Fast Data Applications With Spark, Mesos, Akka, Cassan...Building Streaming And Fast Data Applications With Spark, Mesos, Akka, Cassan...
Building Streaming And Fast Data Applications With Spark, Mesos, Akka, Cassan...
Lightbend
 

Andere mochten auch (8)

Knowledge drivenmicroservices
Knowledge drivenmicroservicesKnowledge drivenmicroservices
Knowledge drivenmicroservices
 
DDD Framework for Java: JdonFramework
DDD Framework for Java: JdonFrameworkDDD Framework for Java: JdonFramework
DDD Framework for Java: JdonFramework
 
Building a Digital Bank
Building a Digital BankBuilding a Digital Bank
Building a Digital Bank
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean Architecture
 
Akka and the Zen of Reactive System Design
Akka and the Zen of Reactive System DesignAkka and the Zen of Reactive System Design
Akka and the Zen of Reactive System Design
 
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache KafkaExploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
Exploring Reactive Integrations With Akka Streams, Alpakka And Apache Kafka
 
Building Streaming And Fast Data Applications With Spark, Mesos, Akka, Cassan...
Building Streaming And Fast Data Applications With Spark, Mesos, Akka, Cassan...Building Streaming And Fast Data Applications With Spark, Mesos, Akka, Cassan...
Building Streaming And Fast Data Applications With Spark, Mesos, Akka, Cassan...
 

Ähnlich wie Highload++ 2015

Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
Solit 2014, Обзор Infocloud для разработчиков, Трухин ЮрийSolit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
solit
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
Media Gorod
 
Cloud overview 60_min
Cloud overview 60_minCloud overview 60_min
Cloud overview 60_min
Pavel Gelvan
 

Ähnlich wie Highload++ 2015 (20)

Governance of content
Governance of contentGovernance of content
Governance of content
 
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETПроектирование сетевой инфраструктуры под SOA проекты ASP.NET
Проектирование сетевой инфраструктуры под SOA проекты ASP.NET
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
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
 
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
Solit 2014, Обзор Infocloud для разработчиков, Трухин ЮрийSolit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
 
DATA CLUSTER
 DATA CLUSTER DATA CLUSTER
DATA CLUSTER
 
Портфолио облачных сервисов от IBM
Портфолио облачных сервисов от IBMПортфолио облачных сервисов от IBM
Портфолио облачных сервисов от IBM
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
битрикс Framework сергей рыжиков
битрикс Framework   сергей рыжиковбитрикс Framework   сергей рыжиков
битрикс Framework сергей рыжиков
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс Россия
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПО
 
Заоблачная репутация ИТ-департамента
Заоблачная репутация ИТ-департаментаЗаоблачная репутация ИТ-департамента
Заоблачная репутация ИТ-департамента
 
Microsoft Internet Information Services 2007
Microsoft Internet Information Services 2007Microsoft Internet Information Services 2007
Microsoft Internet Information Services 2007
 
Informatica for Data Warehouse Optimisation and Data Lake Use-cases
Informatica for Data Warehouse Optimisation and Data Lake Use-casesInformatica for Data Warehouse Optimisation and Data Lake Use-cases
Informatica for Data Warehouse Optimisation and Data Lake Use-cases
 
Cloud overview 60_min
Cloud overview 60_minCloud overview 60_min
Cloud overview 60_min
 
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
 
Pronet bmc pro activenet monitoring. Современная система мониторинга и упра...
Pronet   bmc pro activenet monitoring. Современная система мониторинга и упра...Pronet   bmc pro activenet monitoring. Современная система мониторинга и упра...
Pronet bmc pro activenet monitoring. Современная система мониторинга и упра...
 
Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...
Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...
Обеспечение бесперебойной работы корпоративных приложений в больших гетероген...
 

Highload++ 2015

  • 2. O нас : AT Consulting Компания AT Consulting – один из лидирующих поставщиков ИТ-услуг, оперирующий на тер-ритории Российской Федерации и стран СНГ, начиная с 2001 года КЛЮЧЕВЫЕ ВЕРТИКАЛИ Телекоммуникационный сектор | Финансовый сектор | Государственный сектор | Топливно-энергетический сектор СПЕЦИАЛИЗАЦИЯ Внедрение и сопровождение сложных информационных систем класса ERP | CRM | DWH | ECM | АБС | Billing | SOA и т.д.| Cтратегический и операционный бизнес-консалтинг | Управление проектами и ИТ-аутсорсинг ПАРТНЕРСТВО С МИРОВЫМИ ЛИДЕРАМИ IT- РЫНКА SAP | Oracle | SAS | IBM | Microsoft | EMC | Informatica | MicroStrategy | Prognoz | Hewlett Packard | Avaya | Motorola Solutions | Hitachi | Infotecs | Kraftway | 1C и т.д. 2 000+ КОНСУЛЬТАНТОВ, обладающих опытом реализации крупнейших по масштабам ИТ- проектов ЛИДИРУЮЩАЯ ПОЗИЦИЯ среди крупнейших ИТ- интеграторов в России за 2009, 2010, 2011, 2012, 2013 и 2014 г.
  • 7. Системные требования Требования Было Максимальное в Декабрe 2014 Стало Максимальное RPS 400 886 1100 Посетители онлайн 11000 25338 26000 Среднее время загрузки страниц < 5 сек. < 3 сек. Доступность систем 24*7 (99,9%) 24*7 (99,9%) Поддержка browser IE8, opera7 IE8, opera7 Отказоустойчивость да да Отсутствие CDN Отсутствует возможность масштабировать ландшафт
  • 8. В доклада будет рассказано Оптимизация веб сервера Оптимизация на стороне клиента Оптимизация на стороне middleware Оптимизация Базы Данных Подходы и методология для оптимизации веб приложения Причины низкой производительности1 2 3 4 5 6
  • 9. Особенности портала Сбербанка Таргетирование Персонализация страницы для конечных пользователей Быстрое внесение изменений в структуру портала без установки релизов Единый портал с поддержкой всех устройств
  • 10. Под капотом портала Portal engine BackBase CXP APP framework Spring Search Solr ORM MyBatis, Hibernate JVM IBM JVM 9 Frontend framework Jquery, React, Bootstrap 3 Cache Ehсache RDBMS Oracle 11gR2 Automation Jenkins, Ansible, Flyway
  • 11. 111 33 1 Front end app server RHEL 6.5, IBM WS 8.5 2 Nginx RHEL 6.5 3 Back end app server RHEL 6.5, IBM WS 8.5 2 111 33 2 RAID 5 60 GB PROD DR Oracle DB Oracle DB Heartbeat VLAN Balance VLAN Balance VLAN Servers VLAN Servers VLAN Oracle Data Guard HW Load Balancer RAID 5 60 GB Web&AppTierDBTier Диаграммы развертывания
  • 12. Причины низкой производительности Организационные - священная война между контент- менеджерами, маркетингом и эксплуатацией Технологические - узкие места производительности веб сервера, сервер приложения и базы данных Прикладные – некачественный программный код
  • 13. HolyWar Контент-менеджер: Больше usability для введения контента Маркетинг: Больше интерактивного контента Эксплуатация: Больше производительности портала Pick two
  • 14. Основные факторы, влияющие на производительность Объём контента в странице Географическое расположения, тип сети (Lan, wifi) пользователя Время рендеринга страницы в браузер Технологические или системные узкие места1 2 3 4 Количество вызовов для каждой страницы5
  • 15. Методология для оптимизации веб приложения Измерение производительности Кэширование всего, что возможно Определение узких мест в ИС Определение основных факторов, влияющих на производительность 1 2 3 4
  • 16. Определение узких мест в ИС Симптомы узких мест Путем мониторинга системы1 2 Узкие места в ИС могут быть в3 1 Повышенное время отклика от сервера 2 Ошибки http (4хх, 5хх) 3 Высокая загрузка ЦП 4 Много открытых соединений 5 Утечки памяти 1 Веб серверах 3 Сервере базы данных 2 Сервере приложения 3 Ширине канала связи
  • 17. Основные проблемы на сайте Сбербанка Много неоптимизированных изображений в страницах Не сгруппированные по страницам толстые JS и CSS файлы Большая нагрузка на сервере приложений и контент сервере, а также thread lock Некоторые widget`ы загружали больше 3х картинок сразу для адаптивности сайта Большие hit rate в основных страницах сайта, hit > 175 1 2 3 4 5
  • 18. Основные проблемы на сайте Сбербанка Встроенная геолокализация на основе данных из RDBMS Много застрявших (stuck) соединений в БД Targetting анонимных пользователей через Google аналитику Низкая пропускная способность HW load balancer Обработка бизнес логики на клиентской стороне Высокая нагрузка на CPU (cpu burning) в веб серверах 6 7 8 9 10 11
  • 19. Оптимизация веб сервера В первый день войны Уменьшали уровень сжатия файлов до 6, gzip_comp_level 6 Оставляли уровень логирования на error Увеличили количество кэшированных метаданных файлов (open_file_cache max=60000) Загрузили все статические ресурсы в RAM DISK, у нас не было memcache Доставка заранее сжатых gzip файлов Все изображения для landing page (35) положили в web server Nginx 1 2 3 4 5 6
  • 21. Оптимизация веб сервера SSI для предоставления статических ресурсов
  • 23. Оптимизация веб сервера Использование поддомен (sub domain) для статических ресурсов
  • 24. Оптимизация веб сервера Использование поддомен (sub domain) для статических ресурсов
  • 26. Оптимизация веб сервера (Геолокация) Перенос механизма геолокации с портала на Nginx Nginx модуль ngx_http_geo_module1 ipgeobase базы со сайта ipgeobase.ru2
  • 27. Почему не кэшировать всю страницу? Почему? Сайт динмаический отобразил курс валюты, котировки для всех территориальных банков Пользовательская персонализация widget`ов не позволяет кэшировать 1/3 страницы
  • 28. Оптимизация веб сервера Поддержка WebP формата Создаем версию каждого изображения для формата webp Определяем версия браузера посетителя и раздаем изображения 2 1
  • 29. Оптимизация на стороне клиента Client Side должен заниматься только отображением данных Гибридный подход для рендеринга страницы1 2 Удалили лишних сортировок или фильтраций данных на клиенте 3 1 2 Группировали css, js файлы в одном по группам страницы, чтобы размер файлов не сильно увеличилось 4 Часть widget рендерить в браузере и часть в backend (JSP) Гибридный подход уменьшает нагрузки на browser
  • 30. Оптимизация на стороне клиента Не вызывать rest сервис с параметром currentdate time, результат такого запроса не кэшируется 5 Избавиться от микроатомарных вызов сервисов, использовать монолит-сервис для получения всех данных для одного widget 6
  • 31. Оптимизация на стороне Middleware Особое внимание при проектировании REST сервиса REST сервисы будут доступны из internet Единый дата сервис для получения данных из всех справочников через параметр REST сервиса - не лучший вариант Каждый REST сервис должен проверять входные параметры на null, если все параметры со значениями null, мы не возвращаем данные
  • 32. Оптимизация на стороне Middleware http://beta.sberbank.ru/portalserver/content/atom/cont entRepository/query?q=SELECT+*+FROM+cmis%3Afold e r&searchAllVersions=false&includeAllowableActions=false &includeRelationships=none&maxItems=1000&skipCount =0 -- НЕ ДОПУСТИМА Предоставлять обертку монолит сервисов Ограничивать данные через pagination Сервис должен сортировать и фильтровать данные для client side, а не наоборот
  • 33. Оптимизация на стороне Middleware Кэшировать результат вызова идемпотентных сервисов Пользуйтесь CPU L1-L3 cache эффективно Пользуйтесь offheap ОЗУ, когда массивы данных большие Пользуйтесь высокопроизводительным Stax или VTDXML на месте DOM или SAX Применяйте единый framework для логирования или SL4j фасад
  • 34. Оптимизация на стороне Middleware Увеличивайте время сканирования изменения на log4j2 или logback.xml Пользуйтесь профилированием для выявления и устранения блокировки Конфигурируйте сервер приложения
  • 35. Оптимизация Базы данных Выделить справочники для кэширования, например сущность «Регион», «КЛДР» или «Шаблон страницы» Настройка Cache (Oracle Result Cache) alter table TABLE_NAME RESULT_CACHE(MODE FORCE) alter table TABLE_NAME cache Alter table emp storage (buffer_pool Keep)
  • 36. Оптимизация Базы данных Oracle Database change notification Получить уведомление об DML и DDL операции в объектах базы данных Доступно с релиза 11g Хорошо подходит для очистки или обновления кэша в middleware
  • 37. Уровень кэширования на портале Сбербанка Кэширование статических ресурсов в Nginx Кэширование шаблонов страницы для портала Кэширование результатов вызова backend сервиса Кэширование статических ресурсов на контент сервере Кэширование hibernate l2 Кэширование таблицы и результатов SQL запроса в БД
  • 38. Итоги 27.01.15 03.02.15 05.02.15 13.02.15 Максимальное количество RPS 791 831 1032 1773 Требования 886 Полное отображение страницы (в секундах) 3.3 3 2.2 2.7 Требования 3
  • 39. Инструменты Cloud > LoadStorm > Flood.io Test segment > HP Load runner > Jmeter Miscellaneous > Google speed test > pingdom
  • 40. Заключения ü Необходимо мониторить ИС и анализировать симптомы низкой производительности. ü Необходимо анализировать нагрузки систем. ü Определить и оптимизировать наиболее подверженные нагрузке участки. ü Так же очень важно - это понимание архитектуры своей системы