13 марта 2018 года прошла первая в этом сезоне встреча московского сообщества Java-разработчиков jug.msk.ru. Алексей Рагозин провёл мастер-класс по использованию Java Mission Control. Как прошла встреча, что именно на ней рассказывалось, как приняли доклад участники — обо всём этом далее.



О докладчике


Алексей выступал на jug.msk.ru в четвёртый раз. О впечатлениях от его предыдущих выступлений можно прочитать здесь (4 июня 2015 года), здесь (20 января 2016 года) и здесь (30 августа 2016 года).

Со времени, прошедшего с его предыдущего выступления на jug.msk.ru, он успел поучаствовать в качестве докладчика ещё на ряде конференций:

  • «Эволюция нагрузочного тестирования – от простой автоматизации до BDD» (SECR 2016: видео)
  • «I Know Why Your Java is Slow» (Devoxx 2016: презентация)
  • «Нагрузочное тестирование – автоматизируем полностью» (Heizenbug 2016: видео, презентация)
  • «Java и Linux — борьба за микросекунды» (United Dev Conf 2017: видео, презентация)
  • «Java и Linux — особенности эксплуатации» (HighLoad++ 2017: видео)

Файлы презентаций докладов Алексея теперь находятся на Speaker Deck. Блог с техническими статьями по-прежнему доступен здесь, там есть раздел с полным списком докладов со ссылками на видео и файлы презентаций.

О докладе


Мастер-класс является дополненным и доработанным вариантом выступления, прошедшего в конце прошлого года на встрече питерского JUG.ru.

Анонс мероприятия вызвал небывалый ажиотаж, зал был полностью заполнен. Непривычный формат (обычно встречи являются докладом или докладами на какую-то общую тему), вероятно, также подогрел интерес. Рекомендовано было взять ноутбуки и предварительно была выслана инструкция по подготовке перед посещением.

Алексей перед началом встречи. Андрей Когунь традиционно приветствует участников, напоминая о ближайших конференциях и анонсируя собственный доклад на JPoint 2018.



В первой части был сделан экскурс в профилирование Java-приложений с обзором возможностей Java Flight Recorder и Java Mission Control. В качестве подопытного использовалось приложение, доступное на GitHub.



Во второй части демонстрация была продолжена. Материал исключительно полезен как менее подготовленной аудитории (в качестве обзорного), так и продвинутой (представление более сложных случаев с квалифицированными комментариями). Возможность задать вопросы и получить на них ответы (в перерыве или в конце встречи) оказалась весьма востребованной.



В конце встречи Алексей упомянул об учебном курсе Эффективное профилирование Java приложений, который планирует прочитать 21-22 мая, подробности здесь.

Ссылка на презентацию. Фотографии будут доступны скоро в VK и Google+, видео — на YouTube. Также можно подписаться на рассылку с анонсами следующих встреч jug.msk.ru.

Комментарии (15)


  1. aragozin
    16.03.2018 00:52
    +2

    Ещё раз хочу вас по благодарить за участие в мастер классе. Для мне было очень приятно увидеть такой интерес к теме с вашей стороны.


    Как и обещал раскрываю секрет последнего кейса с мастер класса.


    Вы могли заметить что в параметрах запуска JVM был параметер -Dlogback.level.org.optaplanner=debug. Логи пишутся в файл target/optaplanner.log. Вы легко можете убедиться, что один запуск бенчмарка создаёт около 50 мегабайт лога (в консоль при этом печатаются сообщения с уровнем INFO и выше).


    При изменении параметра на -Dlogback.level.org.optaplanner=info время оптимизации модели на моей машине сократилось с 35.7 до 9.3 секунд.


    Mission Control не лучший инструмент для анализа подобного рода узких мест. Тем не менее, некоторые улики найти было можно.


    “Длинный след” логгера на гистограмме горячих методов


    На гистограмме ниже выделено несколько горячих. Каждая из них если раскрутить дерево вывода имеет отношение к легированию. В сумме выделенные строки уже дают 13.5%, что сопоставимо в временем работы наиболее горячих методов модели.
    image


    Активное использование исключений логгером
    Во вкладке исключений мы видим не малое число java.lang.Throwable, которые растут из логгера.
    image


    Файловые операции на таймлайне потока
    Если посмотреть на таймлайн поток выполняющего оптимизацию, но плотно заполнен записью в файл. Заметьте что скриншот сделан с зумом в 650 миллисекунд.
    image


    Суммарное "чистое" время всех файловых операций всего 1.6 секунды (из 30 секунд записи), что само по себе. Однако большая плотность коротких IO операций обычно является поводом задуматься об их природе.


    Все эти "улики" косвенные. Mission Control хорош тогда когда вы хорошо понимаете природу проблемы, которую вы хотите решить.


    Почему же я выбрал этот кейс для мастер класса? Отчасти чтобы у вас был стимул испробовать все возможности Mission Control, a остановиться на первом скрине показавшем правильный результат. Отчасти чтобы показать как используя профйлер можно потерять лес за деревьями.


  1. aragozin
    16.03.2018 00:52
    +2

    Слайды, которые я использовал по ходу мастер класса доступны тут.


    1. dbelob Автор
      16.03.2018 01:18

      Алексей, спасибо большое за интереснейший мастер-класс! Можно ещё привести точные даты проведения упомянутого учебного курса по профилированию.


      1. aragozin
        16.03.2018 07:18
        +1

        Я набираю группу для двух дневного тренинга 21-22 Мая (программа). По вопросам участия пишите в личку или на почту.


        1. 23derevo
          16.03.2018 11:15
          +1

          хочешь, мы по нашим каналам анонсируем?


        1. igor_suhorukov
          16.03.2018 22:16
          +1

          Полезная и востребованная тема курсов, порекомендую коллегам! Жаль я уеду в это время в командировку и на Spring I/O. Планируешь ли осенью этот же тренинг?



  1. lany
    16.03.2018 13:24

    Я один заметил, что на титульном слайде не весь экран опечатка — hitchKiker вместо hitchhiker? Если да, то мне приз!


    1. dbelob Автор
      16.03.2018 13:34

      Предполагаю, игра слов: «Hitchkicker» (на слайде) = «Hitchhiker» (автостоп) + «kicker» (много вариантов)

      Вопрос автору, то есть aragozin


      1. aragozin
        16.03.2018 16:45

        Никакой интриги нет, просто моя безграмотность.


  1. nehaev
    16.03.2018 14:25

    Спасибо за анонс! Вопрос — почему в вашем плейлисте на Youtube такие неиформативные названия видео?


    Скрин

    image


    1. dbelob Автор
      16.03.2018 14:52

      Затрудняюсь ответить, AKogun47 показалось удобнее именовать «jug.msk.ru — DD/MM/YYYY — Part N».

      Можете предложить Андрею, как было бы удобнее, например, по аналогии с видео JUG.ru:

      • доклады «Встреча jug.msk.ru с <имя фамилия> — <наименование доклада>» или «<имя фамилия> — <наименование доклада>»
      • плейлисты «jug.msk.ru-YYYY»


      1. debose
        17.03.2018 22:39
        +1

        Когда с телефона ищешь что посмотреть, то за всеми префиксами темы доклада уже не видно.


        1. dbelob Автор
          18.03.2018 00:04

          Тогда, наверное, лучше

          • доклады «<имя фамилия> — <наименование доклада>»
          • плейлисты «jug.msk.ru-YYYY»


  1. HueyOne
    17.03.2018 10:55

    Не думал сменить фамилию?
    Я первый раз подумал про космос статья