Применение DTrace для
оптимизации производительности
в web и не только

Git in Sky, 2013
Кто я?
Инженер
● Главный инженер, компания Git in Sky
● 15 лет в индустрии
● Занимаюсь эксплуатацией веб-сайтов
● Оптимизи...
Кто вы?
Работаете в сервисной компании?
● Работаете в продуктовой компании?
● Разрабатываете веб-сайты?
● PHP, Ruby, Java,...
Постановка задачи
Любое приложение на любом языке работает
неоптимально
● Иногда с этим можно мириться
● Иногда с этим нуж...
Как это работало в
идеальном мире?
В идеальном мире проблемы всегда с БД
● Средства профилирования БД:
●
Лог долгих запрос...
Как это работает в
реальном мире?

Git in Sky, 2013
Пример №1
Сайт на Ruby on Rails
● С базой данных все более-менее нормально
● Слишком много процессора расходуется
серверам...
Как быть?
Заплатить NewRelic за Pro версию
● Использовать http://poormansprofiler.org/
● Расставить собственные метрики в ...
DTrace? Нет, не слышал!
Была такая компания Sun Microsystems...
● Была такая операционная система
OpenSolaris...
● DTrace ...
В наше время
Компании Sun больше нет, но
●
DTrace есть во всех Illumos-based
дистрибутивах
●
^ мы используем SmartOS
●
DTr...
Динамический...
«Probes» - датчики
● Инструментировано все подряд, начиная от
ядра системы
● Профайлинг можно включать на ...
Что сделали
Развернули сайт на SmartOS
● Написали DTrace скрипты
● Записали тестовый сценарий в Tsung
● Запустили его, соз...
Что нашли
Медленно работает рендеринг некоторых
страниц (partials)
● Впрочем, эта проблема разработчикам Ruby
была известн...
С чем столкнулись
Стандартный PostgreSQL собран без Hstore
● Разработчики не хотят ничего
оптимизировать
● ^ Большой проек...
Зачем все это было?
Не расходитесь, кроме больших веб-проектов
в жизни есть и другие дела
● Кроме того, платить за NewReli...
Пример №2

vs

Git in Sky, 2013
В углах ринга
MySQL 5.6 из репозитория pkgsrc для
SmartOS, собранный не нами
● MariaDB 10.0.6 Beta, собранная нами
● ^ Неч...
Правила соревнования
Идентичные настройки в конфиге
● Идентичная sakiladb с официального сайта
● (почти) Простейший запрос...
DTrace скрипт, часть 1
#!/usr/sbin/dtrace -s
#pragma D option quiet
dtrace:::BEGIN
{
secs = 600;
}
profile:::profile-4001
...
DTrace скрипт, часть 2
profile:::tick-1sec
/secs == 0/
{
exit(0);
}
END
{
trunc(@stacks, 40);
printa(@stacks);
}

Git in S...
Что нашли
Секретный технический текст:
http://goo.gl/HFsFKv
● Если вкратце:
●
Парсер SQL отлично виден на радаре
●
MySQL —...
С чем столкнулись
MariaDB под Solaris давно никто не собирал
● Чтобы использовать DTrace с MariaDB, нужно
выкинуть DTrace ...
Выводы
Работа для инженера найдется всегда
● Существуют отличные средства для анализа
производительности
● Они бесплатны, ...
Вопросы?
Спасибо! С вами был
● Александр Чистяков, главный инженер
● alex@gitinsky.com
● Компания Git in Sky
● Кстати, нас...
Upcoming SlideShare
Loading in …5
×

Применение DTrace для оптимизации производительности на примере двух больших веб приложений на Ruby on Rails и PHP

414 views
299 views

Published on

Доклад Александра Чистякова на конференции Application Developer Days-4. г.Минск 13 декабря 2013

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
414
On SlideShare
0
From Embeds
0
Number of Embeds
70
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Применение DTrace для оптимизации производительности на примере двух больших веб приложений на Ruby on Rails и PHP

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

×