32
Технологии SmartOS/Solaris для тюнинга приложений Сергей Житинский Александр Чистяков

SmartOS/Solaris app tuning tools/technologies on HL++ 2013

Embed Size (px)

DESCRIPTION

Технологии SmartOS/Solaris для тюнинга приложений HighLoad 2013

Citation preview

Page 1: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

Технологии SmartOS/Solaris для

тюнинга приложенийСергей Житинский

Александр Чистяков

Page 2: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

Давайте познакомимся

• Мы:• Инженеры• “Волшебники”• Занимаемся эксплуатацией веб-сайтов• Занимаемся оптимизацией производительности веб-сайтов• Пасем облака

Page 3: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Вы:• Веб-разработчики?• Архитекторы?• CTO?• Системные администраторы?• Linux, Apache, MySQL, Perl, PHP, nginx, memcached, you-name-it...• Хотите узнать больше о магии?

Давайте познакомимся

Page 4: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

Проблемы все те же

• Тормоза в неизвестном месте

• Отказы

• Недостаточно быстрая работа

• Недостаточная пропускная способность

• Performance issues

• У нас есть новые *wands!

Page 5: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Давным-давно великие маги из компании Sun создали ОС Solaris• И открыли исходный код – так получился OpenSolaris• Но злые подколдуи из Oracle уничтожили Sun и наложили великое заклятие на OpenSolaris• В наше время• Силы добра объединились, чтобы продолжить дело, начатое Sun

Немного истории

Page 6: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• ZFS• DTrace• Zones• Crossbow virtualization

Почему мы выбрали потомка Solaris?

Page 7: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• SmartOS бесплатна• SmartOS делается компанией Joyent• Применяется в Joyent как гипервизор для их облака• Работает с флешки, целиком в памяти• Позволяет организовать облачную инфраструктуру• Кстати, что такое «облачная инфраструктура»• Joyent портировали KVM из Linux в SmartOS• And now: Manta!

Почему мы выбрали SmartOS?

Page 8: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

ZFS

Page 9: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• «физический том» = «vdev»• «группа томов» = «pool»• «раздел» = «dataset»• «логический том» = «ZVOL»• «RAID1» = «mirror»• «RAID5» ~ «raidz», «raidz1»• «RAID5» ~ «raidz2»• «RAID7(?)» ~ «raidz3»

Словарик для людей из мира Linux

Page 10: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Умное двухуровневое кэширование:• ARC – кэш в памяти• L2ARC – кэш на SSD

• Запись (record) размером от 512 байт до 128 Кбайт• ^ каждая запись имеет контрольную сумму• Размер записи задается отдельно для каждого dataset• Возможность сжатия записей (больше размер записи –

эффективное сжатие)• Снэпшоты!• Copy on Write – данные никогда не перезаписываются

Особенности ZFS

Page 11: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Дедупликация• Не бесплатна – требует место в оперативной памяти под таблицы

дедупликации

• zfs send/receive – чтение данных из снэпшота в stdout и наоборот• zfs send/receive можно делать инкрементально (между двумя

последовательными снэпшотами, что позволяет организовать подобие репликации на read-only раздел в другой локации

Особенности ZFS

Page 12: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Создание – практически бесплатно• Я делал несколько тысяч снэпшотов на пуле (3-4 тысячи)

• Удаление – не бесплатно, может вызывать нагрузку на диск• Снэпшоты – только для чтения• Клоны снэпшотов – возможна запись

Снэпшоты

Page 13: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Сценарий 1:• Частые локальные бэкапы для защиты от логических сбоев• Так нельзя защититься от физического сбоя, нужен zfs send/receive

• Сценарий 2:• Создание однотипных окружений путем клонирования эталонного

снэпшота• Девелоперская база в несколько десятков гигабайт – каждому

девелоперу делается свой клон эталонного снэпшота• Уменьшает время развертывания окружений• Экономит место на диске

Сценарии использования снэпшотов

Page 14: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Динамический фреймворк профайлинга приложений• В том числе, позволяет профайлить ядро ОС• Предназначен для работы в продакшне с минимальным оверхедом• ^ Оверхед зависит от числа активных DTrace probes (датчиков)• Язык D (не путать с языком программирования D) – скрипты

описания сессий профилирования• Необходимо инструментировать фреймворки/библиотеки/VMs –

расстановка probes

DTrace

Page 15: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

provider : module : function : name/ predicate /{ action}

•Нет циклов/ветвлений•Нет пользовательских функций

Язык D

Page 16: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Задача – посмотреть, чем занят движок базы данных• Задача имеет классическое решение – сборка сэмплов

стектрейсов через равные промежутки времени и их анализ• Как можно собирать сэмплы?

• gdb, http://poormansprofiler.org – нужны debug symbols и агрегация/анализ в (полу)ручном режиме

• DTrace!

• Кстати, готов поспорить, база, в основном, занята работой с диском!

Пример 1 – «горячие» точки PostgreSQL

Page 17: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

#!/usr/sbin/dtrace -sprofile-997/arg1/{ @a[execname, ufunc(arg1)] = count();}tick-60s{ trunk(@a, 5); exit(0);}

Пример 1 – «горячие» точки PostgreSQL

Page 18: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Задача – найти, как мы попали в это неуютное (функция возвращает ошибку при (не)определенных условиях)

• Как решать без DTrace?• Вызвать падение по SIGSEGV в месте возврата ошибки, собрать

coredump, поглядеть backtrace• Необходима модификация и пересборка приложения• Упасть по SIGSEGV в продакшн окружении? Нет пути!

• DTrace не требует пересборки и модификации и позволяет получить стектрейс вплоть до вызовов ядра

Пример 2 – поиск пути исполнения

Page 19: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

#!/usr/sbin/dtrace -spid$target::zpool_vdev_attach:entry{ self->trace = 1;}pid$target:libzfs::return/self->trace && (int)arg1 == -1/{ ustack (); exit(0);}

Пример 2 – поиск пути исполнения

Page 20: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

zfs_ioctl:returnlibzfs.so.1`zfs_ioctl+0x2czpool_worker`do_zpool_attach_or_replace+0x154zpool_worker`zpool_rpc_attach+0x9fzpool_worker`attach_invoke+0x70zpool_worker`rpc_invoke+0xbbzpool_worker`rpc_server_loop+0x9dzpool_worker`rpc_worker_main_mode+0xc9zpool_worker`rpc_worker_main+0x20zpool_worker`main+0x6czpool_worker`_start+0x83

Пример 2 – поиск пути исполнения

Page 21: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Контейнерная виртуализация или

• ОС-виртуализация

• Аналоги – OpenVZ, jails во FreeBSD• Минимальный оверхед• Ограничение потребления ресурсов• ^ можно менять динамически

Zones

Page 22: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• VNICs over NICs

• Virtual switching• Link aggregation• Routing• NAT & IPFilter• VLANs over VNICs

Network virtualization

Page 23: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Выпущена 4 месяца назад

• Объектное хранилище для BigData

• Если гора не идет к Магомету (integrated computing)

• Реализовано на динамически создаваемой Zone

• Время создания зоны 9 мкс

• Обработчики на любом языке

Manta

Page 24: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• В мире Linux своя магия

• Кроме того, CDDL несовместима с GPL

Почему всего этого нет в мире Linux?

Page 25: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Пакетный менеджер – 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

Насколько новый софт в SmartOS?

• Node.JS – 0.10.7• MongoDB – 2.4.6• PostgreSQL – 9.1.9• Ruby – 1.9.3 p448

Page 26: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Посещаемость около 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% время запросов. Ушли тормоза.

Кейс 1. Git in Sky. Новостной сервис

Page 27: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Посещаемость около 100 тыс. уников в день

• LAMP-стек

• Организованы бэкапы через ZFS snapshots

• Была утеряна почта с важной коммерческой информацией на сумму несколько миллионов рублей

• Восстановление из ZFS-snapshots по указанной дате спасло деньги!

Кейс 2. Git in Sky. Маркетинговый сервис

Page 28: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Все мобильные сервисы 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.

Кейс 3. Joyent & LinkedIn

Page 29: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Voxer делает из вашего телефона рацию walkie-talkie.

• База пользователей выросла за месяц в 30 раз. Linux based storage не справился.

• DTracing Node.js apps• DTracing процессы низкого уровня• Улучшили производительность• Сократили в разы время ожидания

Кейс 4. Joyent & Voxer

Page 30: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• 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

Кейс 5. Joyent & Digital Chocolate

Page 31: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Linux – это хорошо, но недостаточно хорошо• Если выйти за пределы экосистемы Linux, можно получить новые

возможности, такие как• Возможность профилирования приложений• Расширенные возможности организации хранилища• Легкая защита от логических сбоев• Легкая, с массой новых возможностей, организация

бэкапов/восстановлений• Новый способ работы с BigData

Выводы

Page 32: SmartOS/Solaris app tuning tools/technologies on HL++ 2013

• Спасибо за внимание!• С вами были Сергей Житинский и Александр Чистяков• [email protected][email protected]• Компания Git In Sky

Вопросы?