Git in Sky presentation @ HighLoad++ 2013

1,116 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
1,116
On SlideShare
0
From Embeds
0
Number of Embeds
591
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Git in Sky presentation @ HighLoad++ 2013

  1. 1. Технологии SmartOS/Solaris для тюнинга приложений Сергей Житинский Александр Чистяков
  2. 2. Давайте познакомимся • Мы: • • • • Инженеры “Волшебники” Занимаемся эксплуатацией веб-сайтов Занимаемся оптимизацией производительности веб-сайтов • Пасем облака
  3. 3. Давайте познакомимся • Вы: • • • • • • Веб-разработчики? Архитекторы? CTO? Системные администраторы? Linux, Apache, MySQL, Perl, PHP, nginx, memcached, you-name-it... Хотите узнать больше о магии?
  4. 4. Проблемы все те же • Тормоза в неизвестном месте • Отказы • Недостаточно быстрая работа • Недостаточная пропускная способность • Performance issues • У нас есть новые *wands!
  5. 5. Немного истории • Давным-давно великие маги из компании Sun создали ОС Solaris • И открыли исходный код – так получился OpenSolaris • Но злые подколдуи из Oracle уничтожили Sun и наложили великое заклятие на OpenSolaris • В наше время • Силы добра объединились, чтобы продолжить дело, начатое Sun
  6. 6. Почему мы выбрали потомка Solaris? • ZFS • DTrace • Zones • Crossbow virtualization
  7. 7. Почему мы выбрали SmartOS? • SmartOS бесплатна • SmartOS делается компанией Joyent • Применяется в Joyent как гипервизор для их облака • Работает с флешки, целиком в памяти • Позволяет организовать облачную инфраструктуру • Кстати, что такое «облачная инфраструктура» • Joyent портировали KVM из Linux в SmartOS • And now: Manta!
  8. 8. ZFS
  9. 9. Словарик для людей из мира Linux • «физический том» = «vdev» • «группа томов» = «pool» • «раздел» = «dataset» • «логический том» = «ZVOL» • «RAID1» = «mirror» • «RAID5» ~ «raidz», «raidz1» • «RAID5» ~ «raidz2» • «RAID7(?)» ~ «raidz3»
  10. 10. Особенности ZFS • Умное двухуровневое кэширование: • ARC – кэш в памяти • L2ARC – кэш на SSD • Запись (record) размером от 512 байт до 128 Кбайт • ^ каждая запись имеет контрольную сумму • Размер записи задается отдельно для каждого dataset • Возможность сжатия записей (больше размер записи – эффективное сжатие) • Снэпшоты! • Copy on Write – данные никогда не перезаписываются
  11. 11. Особенности ZFS • Дедупликация • Не бесплатна – требует место в оперативной памяти под таблицы дедупликации • zfs send/receive – чтение данных из снэпшота в stdout и наоборот • zfs send/receive можно делать инкрементально (между двумя последовательными снэпшотами, что позволяет организовать подобие репликации на read-only раздел в другой локации
  12. 12. Снэпшоты • Создание – практически бесплатно • Я делал несколько тысяч снэпшотов на пуле (3-4 тысячи) • Удаление – не бесплатно, может вызывать нагрузку на диск • Снэпшоты – только для чтения • Клоны снэпшотов – возможна запись
  13. 13. Сценарии использования снэпшотов • Сценарий 1: • Частые локальные бэкапы для защиты от логических сбоев • Так нельзя защититься от физического сбоя, нужен zfs send/receive • Сценарий 2: • Создание однотипных окружений путем клонирования эталонного снэпшота • Девелоперская база в несколько десятков гигабайт – каждому девелоперу делается свой клон эталонного снэпшота • Уменьшает время развертывания окружений • Экономит место на диске
  14. 14. DTrace • Динамический фреймворк профайлинга приложений • В том числе, позволяет профайлить ядро ОС • Предназначен для работы в продакшне с минимальным оверхедом • ^ Оверхед зависит от числа активных DTrace probes (датчиков) • Язык D (не путать с языком программирования D) – скрипты описания сессий профилирования • Необходимо инструментировать фреймворки/библиотеки/VMs – расстановка probes
  15. 15. Язык D provider : module : function : name / predicate / { action } •Нет циклов/ветвлений •Нет пользовательских функций
  16. 16. Пример 1 – «горячие» точки PostgreSQL • Задача – посмотреть, чем занят движок базы данных • Задача имеет классическое решение – сборка сэмплов стектрейсов через равные промежутки времени и их анализ • Как можно собирать сэмплы? • gdb, http://poormansprofiler.org – нужны debug symbols и агрегация/анализ в (полу)ручном режиме • DTrace! • Кстати, готов поспорить, база, в основном, занята работой с диском!
  17. 17. Пример 1 – «горячие» точки PostgreSQL #!/usr/sbin/dtrace -s profile-997 /arg1/ { @a[execname, ufunc(arg1)] = count(); } tick-60s { trunk(@a, 5); exit(0); }
  18. 18. Пример 2 – поиск пути исполнения • Задача – найти, как мы попали в это неуютное (функция возвращает ошибку при (не)определенных условиях) • Как решать без DTrace? • Вызвать падение по SIGSEGV в месте возврата ошибки, собрать coredump, поглядеть backtrace • Необходима модификация и пересборка приложения • Упасть по SIGSEGV в продакшн окружении? Нет пути! • DTrace не требует пересборки и модификации и позволяет получить стектрейс вплоть до вызовов ядра
  19. 19. Пример 2 – поиск пути исполнения #!/usr/sbin/dtrace -s pid$target::zpool_vdev_attach:entry { self->trace = 1; } pid$target:libzfs::return /self->trace && (int)arg1 == -1/ { ustack (); exit(0); }
  20. 20. Пример 2 – поиск пути исполнения zfs_ioctl:return libzfs.so.1`zfs_ioctl+0x2c zpool_worker`do_zpool_attach_or_replace+0x154 zpool_worker`zpool_rpc_attach+0x9f zpool_worker`attach_invoke+0x70 zpool_worker`rpc_invoke+0xbb zpool_worker`rpc_server_loop+0x9d zpool_worker`rpc_worker_main_mode+0xc9 zpool_worker`rpc_worker_main+0x20 zpool_worker`main+0x6c zpool_worker`_start+0x83
  21. 21. Zones • Контейнерная виртуализация или • ОС-виртуализация • Аналоги – OpenVZ, jails во FreeBSD • Минимальный оверхед • Ограничение потребления ресурсов • ^ можно менять динамически
  22. 22. Network virtualization • VNICs over NICs • Virtual switching • Link aggregation • Routing • NAT & IPFilter • VLANs over VNICs
  23. 23. Manta • Выпущена 4 месяца назад • Объектное хранилище для BigData • Если гора не идет к Магомету (integrated computing) • Реализовано на динамически создаваемой Zone • Время создания зоны 9 мкс • Обработчики на любом языке
  24. 24. Почему всего этого нет в мире Linux? • В мире Linux своя магия • Кроме того, CDDL несовместима с GPL
  25. 25. Насколько новый софт в SmartOS? • Пакетный менеджер – pkgin • GCC – 4.7.0, 4.8.1 • Python – 2.6.8, 2.7.5, 3.2.3, 3.3.2 • Perl – 5.18 • MySQL – 5.6.12 • Node.JS – 0.10.7 • MongoDB – 2.4.6 • PostgreSQL – 9.1.9 • Ruby – 1.9.3 p448
  26. 26. Кейс 1. Git in Sky. Новостной сервис • Посещаемость около 20 тыс. уников в день • UMI.CMS • Жалобы на тормоза в админке,зависания до 2 минут • Было: CentOS, dedicated, 8GbRAM, 4Gb-InnoDB pool. • Стало: Virtual SmartOS, ZFS with ARC on SSD, 8Gb, 6Gb for InnoDB • DTracing time of php functions and mysql queries – удалены ненужные JOINs в UMI ORM SQL выражениях. • Улучшили на 30-40% время запросов. Ушли тормоза.
  27. 27. Кейс 2. Git in Sky. Маркетинговый сервис • Посещаемость около 100 тыс. уников в день • LAMP-стек • Организованы бэкапы через ZFS snapshots • Была утеряна почта с важной коммерческой информацией на сумму несколько миллионов рублей • Восстановление из ZFS-snapshots по указанной дате спасло деньги!
  28. 28. Кейс 3. Joyent & LinkedIn • Все мобильные сервисы LinkedIn расположены в облаке Joyent на SmartOS. • Balance across multiple cloud providers. Instead of just using Amazon Web Services, use a combination of AWS with Joyent, Azure, Rackspace, and/or another provider, diverting traffic to an available cloud in the event of a failure.
  29. 29. Кейс 4. Joyent & Voxer • Voxer делает из вашего телефона рацию walkie-talkie. • База пользователей выросла за месяц в 30 раз. Linux based storage не справился. • DTracing Node.js apps • DTracing процессы низкого уровня • Улучшили производительность • Сократили в разы время ожидания
  30. 30. Кейс 5. Joyent & Digital Chocolate • Digital Chocolate – игровой сервис • Galaxy Life, Millionaire City, Zombie Lane, Army Attack, Crazy Penguin Wars, Tower Bloxx, Rollercoaster Rush • Затраты на инфраструктуру росли быстрее доходов • 50% уменьшение затрат на инфраструктуру в SmartOS Cloud • 99.999% cloud uptime SLA performance
  31. 31. Выводы • Linux – это хорошо, но недостаточно хорошо • Если выйти за пределы экосистемы Linux, можно получить новые возможности, такие как Возможность профилирования приложений Расширенные возможности организации хранилища Легкая защита от логических сбоев Легкая, с массой новых возможностей, организация бэкапов/восстановлений • Новый способ работы с BigData • • • •
  32. 32. Вопросы? • Спасибо за внимание! • С вами были Сергей Житинский и Александр Чистяков • sergey@gitinsky.com • alex@gitinsky.com • Компания Git In Sky

×