SlideShare a Scribd company logo
1 of 24
Download to read offline
Применение DTrace для
оптимизации производительности
в web и не только

Git in Sky, 2013
Кто я?
Инженер
● Главный инженер, компания Git in Sky
● 15 лет в индустрии
● Занимаюсь эксплуатацией веб-сайтов
● Оптимизирую производительность
●

Git in Sky, 2013
Кто вы?
Работаете в сервисной компании?
● Работаете в продуктовой компании?
● Разрабатываете веб-сайты?
● PHP, Ruby, Java, Perl, Node.JS?
● Оптимизируете производительность?
●

Git in Sky, 2013
Постановка задачи
Любое приложение на любом языке работает
неоптимально
● Иногда с этим можно мириться
● Иногда с этим нужно бороться
● Возможные результаты борьбы:
●
Приложение работает быстрее
●
Приложение использует меньше ресурсов
●

Git in Sky, 2013
Как это работало в
идеальном мире?
В идеальном мире проблемы всегда с БД
● Средства профилирования БД:
●
Лог долгих запросов
●
Команда EXPLAIN
●
Книга Дэна Тоу
●

Git in Sky, 2013
Как это работает в
реальном мире?

Git in Sky, 2013
Пример №1
Сайт на Ruby on Rails
● С базой данных все более-менее нормально
● Слишком много процессора расходуется
серверами приложений
● ^ Что, вообще-то, не является большой
проблемой, пока серверов приложений
меньше, чем N, где N определяется
жадностью клиента и другими параметрами
●

Git in Sky, 2013
Как быть?
Заплатить NewRelic за Pro версию
● Использовать http://poormansprofiler.org/
● Расставить собственные метрики в коде и
собирать их в StatsD/Graphite
● Использовать DTrace!
●

Git in Sky, 2013
DTrace? Нет, не слышал!
Была такая компания Sun Microsystems...
● Была такая операционная система
OpenSolaris...
● DTrace — динамический фреймворк
профайлинга приложений, созданный под
OpenSolaris
●

Git in Sky, 2013
В наше время
Компании Sun больше нет, но
●
DTrace есть во всех Illumos-based
дистрибутивах
●
^ мы используем SmartOS
●
DTrace есть в Mac OS X
●
DTrace есть во FreeBSD
●

Git in Sky, 2013
Динамический...
«Probes» - датчики
● Инструментировано все подряд, начиная от
ядра системы
● Профайлинг можно включать на продакшнсистеме
● Это не должно сильно расходовать ресурсы*
●

Git in Sky, 2013
Что сделали
Развернули сайт на SmartOS
● Написали DTrace скрипты
● Записали тестовый сценарий в Tsung
● Запустили его, создали нагрузку
● Собрали статистику
● Проанализировали
● Собрали статистику
● Проанализировали
● Собрали статистику...
●

Git in Sky, 2013
Что нашли
Медленно работает рендеринг некоторых
страниц (partials)
● Впрочем, эта проблема разработчикам Ruby
была известна (диалог как в «Ghost Dog»):
●
- Чувак, паршэлы тормозят!
●
- Походу, чувак, паршэлы тормозят!
●

Git in Sky, 2013
С чем столкнулись
Стандартный PostgreSQL собран без Hstore
● Разработчики не хотят ничего
оптимизировать
● ^ Большой проект не такой большой!
●

Git in Sky, 2013
Зачем все это было?
Не расходитесь, кроме больших веб-проектов
в жизни есть и другие дела
● Кроме того, платить за NewRelic и не знать,
как собрать его самому из подручных
бесплатных средств — это не инженерный
подход, а какая-то ситуация из 90-х
●

Git in Sky, 2013
Пример №2

vs

Git in Sky, 2013
В углах ринга
MySQL 5.6 из репозитория pkgsrc для
SmartOS, собранный не нами
● MariaDB 10.0.6 Beta, собранная нами
● ^ Нечестно, нужно было взять более новый
MySQL!
● ^^ Хехе, дождитесь результатов!
●

Git in Sky, 2013
Правила соревнования
Идентичные настройки в конфиге
● Идентичная sakiladb с официального сайта
● (почти) Простейший запрос из официальной
документации же
● Клиент делает его по сети в один поток с
другой машины просто из шелл-программы в
бесконечном цикле
●

Git in Sky, 2013
DTrace скрипт, часть 1
#!/usr/sbin/dtrace -s
#pragma D option quiet
dtrace:::BEGIN
{
secs = 600;
}
profile:::profile-4001
/pid == mysql_pid/
{
@stacks[pid, tid, execname, ustack(5)] = count();
}
profile:::tick-1sec
{
secs--;
}
Git in Sky, 2013
DTrace скрипт, часть 2
profile:::tick-1sec
/secs == 0/
{
exit(0);
}
END
{
trunc(@stacks, 40);
printa(@stacks);
}

Git in Sky, 2013
Что нашли
Секретный технический текст:
http://goo.gl/HFsFKv
● Если вкратце:
●
Парсер SQL отлично виден на радаре
●
MySQL — 430 из 16359 фреймов связаны с
парсингом
●
MariaDB — 698 из 12002 фреймов связаны с
парсингом
● Похоже, у нас есть победитель!
(MariaDB парсит дольше)
●

Git in Sky, 2013
С чем столкнулись
MariaDB под Solaris давно никто не собирал
● Чтобы использовать DTrace с MariaDB, нужно
выкинуть DTrace инструментирование из
MariaDB!
● Почему 4001hz профайлер собирает так мало
сэмплов?
● ^ Я не знаю!
●

Git in Sky, 2013
Выводы
Работа для инженера найдется всегда
● Существуют отличные средства для анализа
производительности
● Они бесплатны, их можно использовать
● Используйте их!
●

Git in Sky, 2013
Вопросы?
Спасибо! С вами был
● Александр Чистяков, главный инженер
● alex@gitinsky.com
● Компания Git in Sky
● Кстати, нас можно нанять!
● info@gitinsky.com
●

Git in Sky, 2013

More Related Content

What's hot

специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)Ontico
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterpriseAlex Chistyakov
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015Alex Chistyakov
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
Rust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny NovgorodRust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny NovgorodNikita Baksalyar
 
Sama5d3: how to run linux on it
Sama5d3: how to run linux on itSama5d3: how to run linux on it
Sama5d3: how to run linux on itPavel Kurochkin
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Fwdays
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Mail.ru Group
 
Gdg создание telegram бота с использованием google сервисов без денег
Gdg создание telegram бота  с использованием google сервисов без денегGdg создание telegram бота  с использованием google сервисов без денег
Gdg создание telegram бота с использованием google сервисов без денегАлександр Вишняков
 
Why we did not choose Hadoop
Why we did not choose HadoopWhy we did not choose Hadoop
Why we did not choose HadoopSerguei Gitinsky
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovdrupalconf
 
Денис Трифонов
Денис ТрифоновДенис Трифонов
Денис ТрифоновCodeFest
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterAleksandr Tarasov
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Mail.ru Group
 

What's hot (19)

специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterprise
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Build your own multistack JS startup
Build your own multistack JS startupBuild your own multistack JS startup
Build your own multistack JS startup
 
On Docker
On DockerOn Docker
On Docker
 
Dapper + QueryObject
Dapper + QueryObjectDapper + QueryObject
Dapper + QueryObject
 
Rust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny NovgorodRust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny Novgorod
 
Sama5d3: how to run linux on it
Sama5d3: how to run linux on itSama5d3: how to run linux on it
Sama5d3: how to run linux on it
 
Yacovlev
YacovlevYacovlev
Yacovlev
 
Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"Serghei Iakovlev "Chaos engineering in action"
Serghei Iakovlev "Chaos engineering in action"
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
 
Gdg создание telegram бота с использованием google сервисов без денег
Gdg создание telegram бота  с использованием google сервисов без денегGdg создание telegram бота  с использованием google сервисов без денег
Gdg создание telegram бота с использованием google сервисов без денег
 
Why we did not choose Hadoop
Why we did not choose HadoopWhy we did not choose Hadoop
Why we did not choose Hadoop
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosov
 
Денис Трифонов
Денис ТрифоновДенис Трифонов
Денис Трифонов
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot Starter
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
 

Viewers also liked

Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Alex Chistyakov
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Alex Chistyakov
 
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Alex Chistyakov
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseAlex Chistyakov
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014Alex Chistyakov
 
DevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoDevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoAlex Chistyakov
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Alex Chistyakov
 
My talk on programming languages at SPbLUG Mar 2017
My talk on programming languages at SPbLUG Mar 2017My talk on programming languages at SPbLUG Mar 2017
My talk on programming languages at SPbLUG Mar 2017Alex Chistyakov
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyAlex Chistyakov
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016Alex Chistyakov
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016Alex Chistyakov
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахAlex Chistyakov
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014Alex Chistyakov
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014Alex Chistyakov
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016Alex Chistyakov
 

Viewers also liked (20)

Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"Выступление в DataArt на тему "Кто такие DevOps?"
Выступление в DataArt на тему "Кто такие DevOps?"
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)
 
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
Диалог с воображаемым слушателем, а также поток сознания, вне контекста НЕ ИН...
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL database
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
 
DevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFoDevOps-40 meetup #7, Project FiFo
DevOps-40 meetup #7, Project FiFo
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
 
My talk on programming languages at SPbLUG Mar 2017
My talk on programming languages at SPbLUG Mar 2017My talk on programming languages at SPbLUG Mar 2017
My talk on programming languages at SPbLUG Mar 2017
 
HBase on HappyDev 2013
HBase on HappyDev 2013HBase on HappyDev 2013
HBase on HappyDev 2013
 
Harry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of BerkeleyHarry Potter and the Daemons of Berkeley
Harry Potter and the Daemons of Berkeley
 
My talk at LVEE 2016
My talk at LVEE 2016My talk at LVEE 2016
My talk at LVEE 2016
 
My talk at CEE-SECR 2016
My talk at CEE-SECR 2016My talk at CEE-SECR 2016
My talk at CEE-SECR 2016
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
HBase on Dev{Highload}
HBase on Dev{Highload}HBase on Dev{Highload}
HBase on Dev{Highload}
 
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
 
My talk on Piter Py 2016
My talk on Piter Py 2016My talk on Piter Py 2016
My talk on Piter Py 2016
 

Similar to Презентация про DTrace на ADDconf в Минске

Xp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesXp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesAlexey Andreev
 
High Load 2009 Imdg Presentation
High Load 2009   Imdg PresentationHigh Load 2009   Imdg Presentation
High Load 2009 Imdg PresentationHighLoad2009
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.DrupalForumZP2012
 
SmartOS on SPb.LinuxFest 2013Q4
SmartOS on SPb.LinuxFest 2013Q4SmartOS on SPb.LinuxFest 2013Q4
SmartOS on SPb.LinuxFest 2013Q4Alex Chistyakov
 
Инструменты профайлинга С++ кода
Инструменты профайлинга С++ кодаИнструменты профайлинга С++ кода
Инструменты профайлинга С++ кодаcorehard_by
 
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013Alex Chistyakov
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptFDConf
 
Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node jsAlex Tumanoff
 
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнесаФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнесаЭкосистемные Проекты Фрии
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...IT-Portfolio
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...e-Legion
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
 
Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)aragozin
 

Similar to Презентация про DTrace на ADDconf в Минске (20)

Xp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practicesXp days 2019 - Why startups need SRE practices
Xp days 2019 - Why startups need SRE practices
 
Git in Sky services intro
Git in Sky services introGit in Sky services intro
Git in Sky services intro
 
High Load 2009 Imdg Presentation
High Load 2009   Imdg PresentationHigh Load 2009   Imdg Presentation
High Load 2009 Imdg Presentation
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.
 
SmartOS on SPb.LinuxFest 2013Q4
SmartOS on SPb.LinuxFest 2013Q4SmartOS on SPb.LinuxFest 2013Q4
SmartOS on SPb.LinuxFest 2013Q4
 
Инструменты профайлинга С++ кода
Инструменты профайлинга С++ кодаИнструменты профайлинга С++ кода
Инструменты профайлинга С++ кода
 
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013
 
Stairway to Heaven
Stairway to HeavenStairway to Heaven
Stairway to Heaven
 
Use Grunt Luke
Use Grunt LukeUse Grunt Luke
Use Grunt Luke
 
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascriptПостроение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
 
Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node js
 
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнесаФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
ФРИИ интернет предпринимательство - Приложения и сервисы для бизнеса
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
Kranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burmaKranonit s16 (python). sergey burma
Kranonit s16 (python). sergey burma
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
 
Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)Java GC tuning and monitoring (by Alexander Ashitkin)
Java GC tuning and monitoring (by Alexander Ashitkin)
 
Lime.JS
Lime.JSLime.JS
Lime.JS
 

More from Alex Chistyakov

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019Alex Chistyakov
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 Alex Chistyakov
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018Alex Chistyakov
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtAlex Chistyakov
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019Alex Chistyakov
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and KubernetesAlex Chistyakov
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017Alex Chistyakov
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMAlex Chistyakov
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017Alex Chistyakov
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10Alex Chistyakov
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017Alex Chistyakov
 

More from Alex Chistyakov (20)

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017
 

Презентация про DTrace на ADDconf в Минске

  • 1. Применение DTrace для оптимизации производительности в web и не только Git in Sky, 2013
  • 2. Кто я? Инженер ● Главный инженер, компания Git in Sky ● 15 лет в индустрии ● Занимаюсь эксплуатацией веб-сайтов ● Оптимизирую производительность ● Git in Sky, 2013
  • 3. Кто вы? Работаете в сервисной компании? ● Работаете в продуктовой компании? ● Разрабатываете веб-сайты? ● PHP, Ruby, Java, Perl, Node.JS? ● Оптимизируете производительность? ● Git in Sky, 2013
  • 4. Постановка задачи Любое приложение на любом языке работает неоптимально ● Иногда с этим можно мириться ● Иногда с этим нужно бороться ● Возможные результаты борьбы: ● Приложение работает быстрее ● Приложение использует меньше ресурсов ● Git in Sky, 2013
  • 5. Как это работало в идеальном мире? В идеальном мире проблемы всегда с БД ● Средства профилирования БД: ● Лог долгих запросов ● Команда EXPLAIN ● Книга Дэна Тоу ● Git in Sky, 2013
  • 6. Как это работает в реальном мире? Git in Sky, 2013
  • 7. Пример №1 Сайт на Ruby on Rails ● С базой данных все более-менее нормально ● Слишком много процессора расходуется серверами приложений ● ^ Что, вообще-то, не является большой проблемой, пока серверов приложений меньше, чем N, где N определяется жадностью клиента и другими параметрами ● Git in Sky, 2013
  • 8. Как быть? Заплатить NewRelic за Pro версию ● Использовать http://poormansprofiler.org/ ● Расставить собственные метрики в коде и собирать их в StatsD/Graphite ● Использовать DTrace! ● Git in Sky, 2013
  • 9. DTrace? Нет, не слышал! Была такая компания Sun Microsystems... ● Была такая операционная система OpenSolaris... ● DTrace — динамический фреймворк профайлинга приложений, созданный под OpenSolaris ● Git in Sky, 2013
  • 10. В наше время Компании Sun больше нет, но ● DTrace есть во всех Illumos-based дистрибутивах ● ^ мы используем SmartOS ● DTrace есть в Mac OS X ● DTrace есть во FreeBSD ● Git in Sky, 2013
  • 11. Динамический... «Probes» - датчики ● Инструментировано все подряд, начиная от ядра системы ● Профайлинг можно включать на продакшнсистеме ● Это не должно сильно расходовать ресурсы* ● Git in Sky, 2013
  • 12. Что сделали Развернули сайт на SmartOS ● Написали DTrace скрипты ● Записали тестовый сценарий в Tsung ● Запустили его, создали нагрузку ● Собрали статистику ● Проанализировали ● Собрали статистику ● Проанализировали ● Собрали статистику... ● Git in Sky, 2013
  • 13. Что нашли Медленно работает рендеринг некоторых страниц (partials) ● Впрочем, эта проблема разработчикам Ruby была известна (диалог как в «Ghost Dog»): ● - Чувак, паршэлы тормозят! ● - Походу, чувак, паршэлы тормозят! ● Git in Sky, 2013
  • 14. С чем столкнулись Стандартный PostgreSQL собран без Hstore ● Разработчики не хотят ничего оптимизировать ● ^ Большой проект не такой большой! ● Git in Sky, 2013
  • 15. Зачем все это было? Не расходитесь, кроме больших веб-проектов в жизни есть и другие дела ● Кроме того, платить за NewRelic и не знать, как собрать его самому из подручных бесплатных средств — это не инженерный подход, а какая-то ситуация из 90-х ● Git in Sky, 2013
  • 17. В углах ринга MySQL 5.6 из репозитория pkgsrc для SmartOS, собранный не нами ● MariaDB 10.0.6 Beta, собранная нами ● ^ Нечестно, нужно было взять более новый MySQL! ● ^^ Хехе, дождитесь результатов! ● Git in Sky, 2013
  • 18. Правила соревнования Идентичные настройки в конфиге ● Идентичная sakiladb с официального сайта ● (почти) Простейший запрос из официальной документации же ● Клиент делает его по сети в один поток с другой машины просто из шелл-программы в бесконечном цикле ● Git in Sky, 2013
  • 19. DTrace скрипт, часть 1 #!/usr/sbin/dtrace -s #pragma D option quiet dtrace:::BEGIN { secs = 600; } profile:::profile-4001 /pid == mysql_pid/ { @stacks[pid, tid, execname, ustack(5)] = count(); } profile:::tick-1sec { secs--; } Git in Sky, 2013
  • 20. DTrace скрипт, часть 2 profile:::tick-1sec /secs == 0/ { exit(0); } END { trunc(@stacks, 40); printa(@stacks); } Git in Sky, 2013
  • 21. Что нашли Секретный технический текст: http://goo.gl/HFsFKv ● Если вкратце: ● Парсер SQL отлично виден на радаре ● MySQL — 430 из 16359 фреймов связаны с парсингом ● MariaDB — 698 из 12002 фреймов связаны с парсингом ● Похоже, у нас есть победитель! (MariaDB парсит дольше) ● Git in Sky, 2013
  • 22. С чем столкнулись MariaDB под Solaris давно никто не собирал ● Чтобы использовать DTrace с MariaDB, нужно выкинуть DTrace инструментирование из MariaDB! ● Почему 4001hz профайлер собирает так мало сэмплов? ● ^ Я не знаю! ● Git in Sky, 2013
  • 23. Выводы Работа для инженера найдется всегда ● Существуют отличные средства для анализа производительности ● Они бесплатны, их можно использовать ● Используйте их! ● Git in Sky, 2013
  • 24. Вопросы? Спасибо! С вами был ● Александр Чистяков, главный инженер ● alex@gitinsky.com ● Компания Git in Sky ● Кстати, нас можно нанять! ● info@gitinsky.com ● Git in Sky, 2013