SlideShare a Scribd company logo
1 of 17
Java Performance




                   Подготовил: Артем Жданов.
Agenda

Теория
– Классические ошибки
– Выбор метрик
– Способы улучшения производительности
Пример
– Workflow система
– Проблемы и решения
У меня все медленно!




     Что делать?
Первый шаг
  «я вижу, что метод foo() реализован неэффективно»
  «по профайлеру видно, что метод bar() – горячий и занимает
  5%»
  «по-моему, у нас тормозит БД, и нужно перейти с DB 1 на DB 2"
 Правильный первый шаг:
1. Выбрать метрику
  – ops/sec, transactions/sec
  – время исполнения
  – время отклика
2. Убедиться в корректности метрики
  – релевантна (учитывает реальный сценарий работы приложения)
  – повторяема
Метрики
    Throughput, Bandwidth. Количество работы, выполненное за
    единицу времени:
    • MB/sec
    • ops/sec, transactions/sec
    • FPS frames per second
    Время...
•   ...работы
     •   Execution time: общее время исполнения
•   ...отклика
     • Latency: время отдельной операции
     • Response time: задержка между стимулом и реакцией
•   ...запуска
     • Startup time: время до начала работы
     • Time to performance: время до начала хорошей работы
    Память
Представление метрик

“A в N раз быстрее B” означает



SpeedUp = ABS(Time(A) – Time(B)) / Time(B);
Как ускорить. Основные шаги

 Что мешает работать быстрее?
  – Делаем эксперименты и проверяем метрики на проблемных местах
 Где это находиться?
  – Делаем и проверяем предположение с помощью profiler tools
 Как это исправить?
  – Итеративный подход
Что можно улучшить
 Уровень системы
  – I/O (Сеть/Диск)
  – Операционная система
  – Процессор/память
 Уровень JVM
  – Издержки работы самой JVM
  – Время GC
 Уровень приложения
  – Количество потоков (мало или даже много)
  – Лишние блокировки, синхронизация
  – Алгоритмические проблемы (лишние вызовы, неэффективные структуры
    данных и алгоритмы)
 Архитектурный уровень
  – Кеширование
  – Распределение нагрузки на нескольких узлов
  – Оптимизация взаимодействия между слоями
Что можно улучшить
 Уровень системы
  – I/O (Сеть/Диск)
  – Операционная система
  – Процессор/память
 Уровень JVM
  – Издержки работы самой JVM
  – Время GC
 Уровень приложения
  – Количество потоков (мало или даже много)
  – Лишние блокировки, синхронизация
  – Алгоритмические проблемы (лишние вызовы, неэффективные структуры
    данных и алгоритмы)
 Архитектурный уровень
  – Кеширование
  – Распределение нагрузки на нескольких узлов
  – Оптимизация взаимодействия между слоями
Что можно улучшить
 Уровень системы
  – I/O (Сеть/Диск)
  – Операционная система
  – Процессор/память
 Уровень JVM
  – Издержки работы самой JVM
  – Время GC
 Уровень приложения
  – Количество потоков (мало или даже много)
  – Лишние блокировки, синхронизация
  – Алгоритмические проблемы (лишние вызовы, неэффективные структуры
    данных и алгоритмы)
 Архитектурный уровень
  – Кеширование
  – Распределение нагрузки на нескольких узлов
  – Оптимизация взаимодействия между слоями
Система распределённых вычислений
 Требования
  – Workflow system
Система распределённых вычислений

 Требования
  Большой объем Read-Only data

                      Data read distribution
                 Read only    HSQL    MySQL    Oracle


                                 7%

                        17%


                       16%              60%
Архитектурные ЗА и ПРОТИВ
Кешируем RO
–   Как распределять кеш между нодами?
–   Как контролировать размер кеша?
–   Как узнать на сколько эффективен кеш?
–   Если через 5 секунд ситуация изменилась?
–   Как организовать кеш локально?
Обрабатываем ивенты параллельно
– Сколько потоков создать?
– А если 2 потока начнут обработку одного
  ивента?
– Как узнать на сколько эффективно
  добавление еще одного потока?
– Если через 5 секунд ситуация изменилась?
Решения
Ранжируем данные в кеше по полезности
– Что полезнее закешировать таблицу Users или Books?
Измеряем производительность системы
– Какую взять метрику?
Используем данные измерений что бы изменить
критерии
– Стало лучше на 5%, это хорошо?
– Стало лучше в 3000 раз, WTF?
2 стратегии измерения
– Application-based
– System-based
System-based




Метрика - events/sec
Может лучше System.nanoTime();?
Какой будет overhead?
Что делать при параллельном исполнении?
Application-based




Метрика уже другая - выполненная работа
Overhead правда чуть выше
Параллельное исполнение - не проблема
Когда подход не будет работать?
Java Performance

More Related Content

What's hot

Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Проектирование приложений в IBM Cognos ТМ1
Проектирование приложений в IBM Cognos ТМ1Проектирование приложений в IBM Cognos ТМ1
Проектирование приложений в IBM Cognos ТМ1
Yuri Kudryavcev
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
HappyDev
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
Веб-сервер Phantom
Веб-сервер PhantomВеб-сервер Phantom
Веб-сервер Phantom
yaevents
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Ontico
 
SECON'2014 - Сергей Цивин - Производительность веб-приложений
SECON'2014 - Сергей Цивин - Производительность веб-приложенийSECON'2014 - Сергей Цивин - Производительность веб-приложений
SECON'2014 - Сергей Цивин - Производительность веб-приложений
Конференция разработчиков программного обеспечения SECON'2014
 

What's hot (20)

Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
 
Android Telegram S Optimizations
Android Telegram S OptimizationsAndroid Telegram S Optimizations
Android Telegram S Optimizations
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Проектирование приложений в IBM Cognos ТМ1
Проектирование приложений в IBM Cognos ТМ1Проектирование приложений в IBM Cognos ТМ1
Проектирование приложений в IBM Cognos ТМ1
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
 
Нагрузочное тестирование
Нагрузочное тестированиеНагрузочное тестирование
Нагрузочное тестирование
 
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
2015-12-05 Вадим Литвинов - Проблемы разработки распределённых систем
 
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страницFrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
FrontDays #1. Илья Кучмин, Оптимизация загрузки тяжелых страниц
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 
Веб-сервер Phantom
Веб-сервер PhantomВеб-сервер Phantom
Веб-сервер Phantom
 
Распределенная система тестирования машинного перевода
Распределенная система тестирования машинного переводаРаспределенная система тестирования машинного перевода
Распределенная система тестирования машинного перевода
 
Кораблики. Принципы канбан и теории ограничений
Кораблики. Принципы канбан и теории ограниченийКораблики. Принципы канбан и теории ограничений
Кораблики. Принципы канбан и теории ограничений
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
 
SECON'2014 - Сергей Цивин - Производительность веб-приложений
SECON'2014 - Сергей Цивин - Производительность веб-приложенийSECON'2014 - Сергей Цивин - Производительность веб-приложений
SECON'2014 - Сергей Цивин - Производительность веб-приложений
 
Проверка на прочность или нагрузочное тестирование с Jmeter
Проверка на прочность или нагрузочное тестирование с JmeterПроверка на прочность или нагрузочное тестирование с Jmeter
Проверка на прочность или нагрузочное тестирование с Jmeter
 

Similar to Java Performance

[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF
Aleksey Shipilev
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
Media Gorod
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
Dmitry Buzdin
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потапов
rit2010
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потапов
rit2010
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
Alex Chistyakov
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
Computer Science Club
 
дерюшкин Agile vector
дерюшкин   Agile vectorдерюшкин   Agile vector
дерюшкин Agile vector
Magneta AI
 

Similar to Java Performance (20)

[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF[jeeconf-2011] Java Platform Performance BoF
[jeeconf-2011] Java Platform Performance BoF
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBA
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
владивосток форум производительность_ha
владивосток форум производительность_haвладивосток форум производительность_ha
владивосток форум производительность_ha
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data Grid
 
Пишем самый быстрый хеш для кэширования данных
Пишем самый быстрый хеш для кэширования данныхПишем самый быстрый хеш для кэширования данных
Пишем самый быстрый хеш для кэширования данных
 
евгений потапов Root Conf потапов
евгений потапов Root Conf   потаповевгений потапов Root Conf   потапов
евгений потапов Root Conf потапов
 
Evgeniy Potapov Root Conf потапов
Evgeniy Potapov Root Conf   потаповEvgeniy Potapov Root Conf   потапов
Evgeniy Potapov Root Conf потапов
 
Sivko
SivkoSivko
Sivko
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Костянтин Чаус — 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
 
Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"Доклад "Мониторинг серверных приложений"
Доклад "Мониторинг серверных приложений"
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
 
Load testing with Tsung
Load testing with TsungLoad testing with Tsung
Load testing with Tsung
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
дерюшкин Agile vector
дерюшкин   Agile vectorдерюшкин   Agile vector
дерюшкин Agile vector
 
Agile Vector - внедрение agile разработки в Райффайзенбанке
Agile Vector - внедрение agile разработки в РайффайзенбанкеAgile Vector - внедрение agile разработки в Райффайзенбанке
Agile Vector - внедрение agile разработки в Райффайзенбанке
 

More from Alex Tumanoff

Navigation map factory by Alexey Klimenko
Navigation map factory by Alexey KlimenkoNavigation map factory by Alexey Klimenko
Navigation map factory by Alexey Klimenko
Alex Tumanoff
 
Serialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsSerialization and performance by Sergey Morenets
Serialization and performance by Sergey Morenets
Alex Tumanoff
 
Async clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAsync clinic by by Sergey Teplyakov
Async clinic by by Sergey Teplyakov
Alex Tumanoff
 
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey Teplyakov
Alex Tumanoff
 
Bdd by Dmitri Aizenberg
Bdd by Dmitri AizenbergBdd by Dmitri Aizenberg
Bdd by Dmitri Aizenberg
Alex Tumanoff
 
Разработка расширений Firefox
Разработка расширений FirefoxРазработка расширений Firefox
Разработка расширений Firefox
Alex Tumanoff
 

More from Alex Tumanoff (20)

Sql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiSql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen Nedaskivskyi
 
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis ReznikOdessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis Reznik
 
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene PolonichkoAzure data bricks by Eugene Polonichko
Azure data bricks by Eugene Polonichko
 
Sdlc by Anatoliy Anthony Cox
Sdlc by  Anatoliy Anthony CoxSdlc by  Anatoliy Anthony Cox
Sdlc by Anatoliy Anthony Cox
 
Kostenko ux november-2014_1
Kostenko ux november-2014_1Kostenko ux november-2014_1
Kostenko ux november-2014_1
 
Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3Java 8 in action.jinq.v.1.3
Java 8 in action.jinq.v.1.3
 
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас..."Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
"Drools: декларативная бизнес-логика в Java-приложениях" by Дмитрий Контрерас...
 
Spring.new hope.1.3
Spring.new hope.1.3Spring.new hope.1.3
Spring.new hope.1.3
 
Sql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton VidishchevSql saturday azure storage by Anton Vidishchev
Sql saturday azure storage by Anton Vidishchev
 
Navigation map factory by Alexey Klimenko
Navigation map factory by Alexey KlimenkoNavigation map factory by Alexey Klimenko
Navigation map factory by Alexey Klimenko
 
Serialization and performance by Sergey Morenets
Serialization and performance by Sergey MorenetsSerialization and performance by Sergey Morenets
Serialization and performance by Sergey Morenets
 
Игры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей РыбаковИгры для мобильных платформ by Алексей Рыбаков
Игры для мобильных платформ by Алексей Рыбаков
 
Android sync adapter
Android sync adapterAndroid sync adapter
Android sync adapter
 
Async clinic by by Sergey Teplyakov
Async clinic by by Sergey TeplyakovAsync clinic by by Sergey Teplyakov
Async clinic by by Sergey Teplyakov
 
Deep Dive C# by Sergey Teplyakov
Deep Dive  C# by Sergey TeplyakovDeep Dive  C# by Sergey Teplyakov
Deep Dive C# by Sergey Teplyakov
 
Bdd by Dmitri Aizenberg
Bdd by Dmitri AizenbergBdd by Dmitri Aizenberg
Bdd by Dmitri Aizenberg
 
Неформальные размышления о сертификации в IT
Неформальные размышления о сертификации в ITНеформальные размышления о сертификации в IT
Неформальные размышления о сертификации в IT
 
Разработка расширений Firefox
Разработка расширений FirefoxРазработка расширений Firefox
Разработка расширений Firefox
 
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So..."AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
"AnnotatedSQL - провайдер с плюшками за 5 минут" - Геннадий Дубина, Senior So...
 
Patterns of parallel programming
Patterns of parallel programmingPatterns of parallel programming
Patterns of parallel programming
 

Recently uploaded

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 

Recently uploaded (9)

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 

Java Performance

  • 1. Java Performance Подготовил: Артем Жданов.
  • 2. Agenda Теория – Классические ошибки – Выбор метрик – Способы улучшения производительности Пример – Workflow система – Проблемы и решения
  • 3. У меня все медленно! Что делать?
  • 4. Первый шаг «я вижу, что метод foo() реализован неэффективно» «по профайлеру видно, что метод bar() – горячий и занимает 5%» «по-моему, у нас тормозит БД, и нужно перейти с DB 1 на DB 2" Правильный первый шаг: 1. Выбрать метрику – ops/sec, transactions/sec – время исполнения – время отклика 2. Убедиться в корректности метрики – релевантна (учитывает реальный сценарий работы приложения) – повторяема
  • 5. Метрики Throughput, Bandwidth. Количество работы, выполненное за единицу времени: • MB/sec • ops/sec, transactions/sec • FPS frames per second Время... • ...работы • Execution time: общее время исполнения • ...отклика • Latency: время отдельной операции • Response time: задержка между стимулом и реакцией • ...запуска • Startup time: время до начала работы • Time to performance: время до начала хорошей работы Память
  • 6. Представление метрик “A в N раз быстрее B” означает SpeedUp = ABS(Time(A) – Time(B)) / Time(B);
  • 7. Как ускорить. Основные шаги Что мешает работать быстрее? – Делаем эксперименты и проверяем метрики на проблемных местах Где это находиться? – Делаем и проверяем предположение с помощью profiler tools Как это исправить? – Итеративный подход
  • 8. Что можно улучшить Уровень системы – I/O (Сеть/Диск) – Операционная система – Процессор/память Уровень JVM – Издержки работы самой JVM – Время GC Уровень приложения – Количество потоков (мало или даже много) – Лишние блокировки, синхронизация – Алгоритмические проблемы (лишние вызовы, неэффективные структуры данных и алгоритмы) Архитектурный уровень – Кеширование – Распределение нагрузки на нескольких узлов – Оптимизация взаимодействия между слоями
  • 9. Что можно улучшить Уровень системы – I/O (Сеть/Диск) – Операционная система – Процессор/память Уровень JVM – Издержки работы самой JVM – Время GC Уровень приложения – Количество потоков (мало или даже много) – Лишние блокировки, синхронизация – Алгоритмические проблемы (лишние вызовы, неэффективные структуры данных и алгоритмы) Архитектурный уровень – Кеширование – Распределение нагрузки на нескольких узлов – Оптимизация взаимодействия между слоями
  • 10. Что можно улучшить Уровень системы – I/O (Сеть/Диск) – Операционная система – Процессор/память Уровень JVM – Издержки работы самой JVM – Время GC Уровень приложения – Количество потоков (мало или даже много) – Лишние блокировки, синхронизация – Алгоритмические проблемы (лишние вызовы, неэффективные структуры данных и алгоритмы) Архитектурный уровень – Кеширование – Распределение нагрузки на нескольких узлов – Оптимизация взаимодействия между слоями
  • 11. Система распределённых вычислений Требования – Workflow system
  • 12. Система распределённых вычислений Требования Большой объем Read-Only data Data read distribution Read only HSQL MySQL Oracle 7% 17% 16% 60%
  • 13. Архитектурные ЗА и ПРОТИВ Кешируем RO – Как распределять кеш между нодами? – Как контролировать размер кеша? – Как узнать на сколько эффективен кеш? – Если через 5 секунд ситуация изменилась? – Как организовать кеш локально? Обрабатываем ивенты параллельно – Сколько потоков создать? – А если 2 потока начнут обработку одного ивента? – Как узнать на сколько эффективно добавление еще одного потока? – Если через 5 секунд ситуация изменилась?
  • 14. Решения Ранжируем данные в кеше по полезности – Что полезнее закешировать таблицу Users или Books? Измеряем производительность системы – Какую взять метрику? Используем данные измерений что бы изменить критерии – Стало лучше на 5%, это хорошо? – Стало лучше в 3000 раз, WTF? 2 стратегии измерения – Application-based – System-based
  • 15. System-based Метрика - events/sec Может лучше System.nanoTime();? Какой будет overhead? Что делать при параллельном исполнении?
  • 16. Application-based Метрика уже другая - выполненная работа Overhead правда чуть выше Параллельное исполнение - не проблема Когда подход не будет работать?