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
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
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