SlideShare a Scribd company logo
Технологии
SmartOS/Solaris для
тюнинга приложений
Сергей Житинский
Александр Чистяков
Давайте познакомимся
• Мы:
•
•
•
•

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

Веб-разработчики?
Архитекторы?
CTO?
Системные администраторы?
Linux, Apache, MySQL, Perl, PHP, nginx, memcached, you-name-it...
Хотите узнать больше о магии?
Проблемы все те же
• Тормоза в неизвестном месте
• Отказы
• Недостаточно быстрая работа
• Недостаточная пропускная способность
• Performance issues
• У нас есть новые *wands!
Немного истории
• Давным-давно великие маги
из компании Sun создали ОС Solaris
• И открыли исходный код –
так получился OpenSolaris
• Но злые подколдуи из Oracle уничтожили Sun
и наложили великое заклятие на OpenSolaris
• В наше время
• Силы добра объединились, чтобы продолжить дело, начатое Sun
Почему мы выбрали потомка Solaris?
• ZFS
• DTrace
• Zones
• Crossbow virtualization
Почему мы выбрали SmartOS?
• SmartOS бесплатна
• SmartOS делается компанией Joyent
• Применяется в Joyent как гипервизор для их облака
• Работает с флешки, целиком в памяти
• Позволяет организовать облачную инфраструктуру
• Кстати, что такое «облачная инфраструктура»
• Joyent портировали KVM из Linux в SmartOS
• And now: Manta!
ZFS
Словарик для людей из мира Linux
• «физический том» = «vdev»
• «группа томов» = «pool»
• «раздел» = «dataset»
• «логический том» = «ZVOL»
• «RAID1» = «mirror»
• «RAID5» ~ «raidz», «raidz1»
• «RAID5» ~ «raidz2»
• «RAID7(?)» ~ «raidz3»
Особенности ZFS
• Умное двухуровневое кэширование:
• ARC – кэш в памяти
• L2ARC – кэш на SSD

• Запись (record) размером от 512 байт до 128 Кбайт
• ^ каждая запись имеет контрольную сумму
• Размер записи задается отдельно для каждого dataset
• Возможность сжатия записей (больше размер записи –
эффективное сжатие)
• Снэпшоты!
• Copy on Write – данные никогда не перезаписываются
Особенности ZFS
• Дедупликация
• Не бесплатна – требует место в оперативной памяти под таблицы
дедупликации

• zfs send/receive – чтение данных из снэпшота в stdout и наоборот
• zfs send/receive можно делать инкрементально (между двумя
последовательными снэпшотами, что позволяет организовать
подобие репликации на read-only раздел в другой локации
Снэпшоты
• Создание – практически бесплатно
• Я делал несколько тысяч снэпшотов на пуле (3-4 тысячи)

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

• Сценарий 2:
• Создание однотипных окружений путем клонирования эталонного
снэпшота
• Девелоперская база в несколько десятков гигабайт – каждому
девелоперу делается свой клон эталонного снэпшота
• Уменьшает время развертывания окружений
• Экономит место на диске
DTrace
• Динамический фреймворк профайлинга приложений
• В том числе, позволяет профайлить ядро ОС
• Предназначен для работы в продакшне с минимальным оверхедом
• ^ Оверхед зависит от числа активных DTrace probes (датчиков)
• Язык D (не путать с языком программирования D) – скрипты
описания сессий профилирования
• Необходимо инструментировать фреймворки/библиотеки/VMs –
расстановка probes
Язык D
provider : module : function : name
/ predicate /
{
action
}
•Нет циклов/ветвлений
•Нет пользовательских функций
Пример 1 – «горячие» точки
PostgreSQL
• Задача – посмотреть, чем занят движок базы данных
• Задача имеет классическое решение – сборка сэмплов
стектрейсов через равные промежутки времени и их анализ
• Как можно собирать сэмплы?
• gdb, http://poormansprofiler.org – нужны debug symbols и
агрегация/анализ в (полу)ручном режиме
• DTrace!

• Кстати, готов поспорить, база, в основном, занята работой с
диском!
Пример 1 – «горячие» точки
PostgreSQL
#!/usr/sbin/dtrace -s
profile-997
/arg1/
{
@a[execname, ufunc(arg1)] = count();
}
tick-60s
{
trunk(@a, 5);
exit(0);
}
Пример 2 – поиск пути исполнения
• Задача – найти, как мы попали в это неуютное (функция
возвращает ошибку при (не)определенных условиях)
• Как решать без DTrace?
• Вызвать падение по SIGSEGV в месте возврата ошибки, собрать
coredump, поглядеть backtrace
• Необходима модификация и пересборка приложения
• Упасть по SIGSEGV в продакшн окружении? Нет пути!

• DTrace не требует пересборки и модификации и позволяет
получить стектрейс вплоть до вызовов ядра
Пример 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);
}
Пример 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
Zones
• Контейнерная виртуализация или
• ОС-виртуализация
• Аналоги – OpenVZ, jails во FreeBSD
• Минимальный оверхед
• Ограничение потребления ресурсов
• ^ можно менять динамически
Network virtualization
• VNICs over NICs
• Virtual switching
• Link aggregation
• Routing
• NAT & IPFilter
• VLANs over VNICs
Manta
• Выпущена 4 месяца назад
• Объектное хранилище для
BigData
• Если гора не идет к Магомету
(integrated computing)
• Реализовано на динамически
создаваемой Zone
• Время создания зоны 9 мкс
• Обработчики на любом языке
Почему всего этого нет в мире Linux?
• В мире Linux своя магия

• Кроме того, CDDL несовместима с GPL
Насколько новый софт в 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
Кейс 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% время запросов. Ушли тормоза.
Кейс 2. Git in Sky. Маркетинговый
сервис

• Посещаемость около 100 тыс. уников в день
• LAMP-стек
• Организованы бэкапы через ZFS snapshots
• Была утеряна почта с важной коммерческой информацией
на сумму несколько миллионов рублей
• Восстановление из ZFS-snapshots по указанной дате спасло
деньги!
Кейс 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.
Кейс 4. Joyent & Voxer
• Voxer делает из вашего телефона
рацию walkie-talkie.
• База пользователей выросла за месяц
в 30 раз. Linux based storage не
справился.
• DTracing Node.js apps
• DTracing процессы низкого уровня
• Улучшили производительность
• Сократили в разы время ожидания
Кейс 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
Выводы
• Linux – это хорошо, но недостаточно хорошо
• Если выйти за пределы экосистемы Linux, можно получить новые
возможности, такие как
Возможность профилирования приложений
Расширенные возможности организации хранилища
Легкая защита от логических сбоев
Легкая, с массой новых возможностей, организация
бэкапов/восстановлений
• Новый способ работы с BigData
•
•
•
•
Вопросы?
• Спасибо за внимание!
• С вами были Сергей Житинский и Александр Чистяков
• sergey@gitinsky.com
• alex@gitinsky.com
• Компания Git In Sky

More Related Content

What's hot (20)

PDF
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Ontico
 
PDF
Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)
Ontico
 
PDF
Анатомия веб-сервиса (РИТ-2014)
Andrey Smirnov
 
PDF
Денис Иванов
CodeFest
 
PDF
My talk at Highload++ 2015
Alex Chistyakov
 
PDF
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
PDF
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Ontico
 
PDF
Вячеслав Бахмутов
CodeFest
 
PPTX
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
Ontico
 
PPTX
Денис Иванов
CodeFest
 
PPTX
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Ontico
 
PPTX
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Ontico
 
PPTX
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Ontico
 
PPTX
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Ontico
 
PDF
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Badoo Development
 
PDF
Облако в Badoo год спустя
Yuriy Nasretdinov
 
PDF
Docker & Puppet: как их скрестить и надо ли вам это?
Anton Turetsky
 
PDF
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Ontico
 
PDF
Chronicle Map
Roman Leventov
 
PPTX
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
Ontico
 
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
Ontico
 
Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)
Ontico
 
Анатомия веб-сервиса (РИТ-2014)
Andrey Smirnov
 
Денис Иванов
CodeFest
 
My talk at Highload++ 2015
Alex Chistyakov
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная ...
Ontico
 
Вячеслав Бахмутов
CodeFest
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
Ontico
 
Денис Иванов
CodeFest
 
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Ontico
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Ontico
 
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Ontico
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Ontico
 
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Badoo Development
 
Облако в Badoo год спустя
Yuriy Nasretdinov
 
Docker & Puppet: как их скрестить и надо ли вам это?
Anton Turetsky
 
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Ontico
 
Chronicle Map
Roman Leventov
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
Ontico
 

Similar to SmartOS/Solaris app tuning tools/technologies on HL++ 2013 (20)

PDF
Solaris OS
SSA KPI
 
PDF
SmartOS on SPb.LinuxFest 2013Q4
Alex Chistyakov
 
PDF
Extreme cloud storage on free bsd (Андрей Пантюхин)
Ontico
 
PDF
CodeFest 2013. Чистяков А. — Использование систем виртуализации в веб
CodeFest
 
PPTX
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
PDF
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Fuenteovejuna
 
PDF
Opensource оптимизация инфраструктурных затрат
КРОК
 
PDF
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
Ontico
 
PDF
DC/OS more than PAAS
Nikita Borzykh
 
PDF
Isilapp — Extreme Cloud Storage on FreeBSD
Andrew Pantyukhin
 
PDF
Опыт применения виртуализации для web-систем часть 2
Alex Chistyakov
 
PDF
Микросервисная архитектура на базе CoreOS и Kubernetes
Denis Izmaylov
 
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
PDF
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
PDF
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
ODP
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
rit2011
 
PDF
"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс
Yandex
 
PPTX
Опыт внедрения OpenStack
Yandex
 
PDF
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
PDF
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest
 
Solaris OS
SSA KPI
 
SmartOS on SPb.LinuxFest 2013Q4
Alex Chistyakov
 
Extreme cloud storage on free bsd (Андрей Пантюхин)
Ontico
 
CodeFest 2013. Чистяков А. — Использование систем виртуализации в веб
CodeFest
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Ontico
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Fuenteovejuna
 
Opensource оптимизация инфраструктурных затрат
КРОК
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
Ontico
 
DC/OS more than PAAS
Nikita Borzykh
 
Isilapp — Extreme Cloud Storage on FreeBSD
Andrew Pantyukhin
 
Опыт применения виртуализации для web-систем часть 2
Alex Chistyakov
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Denis Izmaylov
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
rit2011
 
"Cocaine — облачная платформа Яндекса". Андрей Сибирёв, Яндекс
Yandex
 
Опыт внедрения OpenStack
Yandex
 
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov
 
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest
 
Ad

More from Alex Chistyakov (20)

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

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

  • 2. Давайте познакомимся • Мы: • • • • Инженеры “Волшебники” Занимаемся эксплуатацией веб-сайтов Занимаемся оптимизацией производительности веб-сайтов • Пасем облака
  • 3. Давайте познакомимся • Вы: • • • • • • Веб-разработчики? Архитекторы? CTO? Системные администраторы? Linux, Apache, MySQL, Perl, PHP, nginx, memcached, you-name-it... Хотите узнать больше о магии?
  • 4. Проблемы все те же • Тормоза в неизвестном месте • Отказы • Недостаточно быстрая работа • Недостаточная пропускная способность • Performance issues • У нас есть новые *wands!
  • 5. Немного истории • Давным-давно великие маги из компании Sun создали ОС Solaris • И открыли исходный код – так получился OpenSolaris • Но злые подколдуи из Oracle уничтожили Sun и наложили великое заклятие на OpenSolaris • В наше время • Силы добра объединились, чтобы продолжить дело, начатое Sun
  • 6. Почему мы выбрали потомка Solaris? • ZFS • DTrace • Zones • Crossbow virtualization
  • 7. Почему мы выбрали SmartOS? • SmartOS бесплатна • SmartOS делается компанией Joyent • Применяется в Joyent как гипервизор для их облака • Работает с флешки, целиком в памяти • Позволяет организовать облачную инфраструктуру • Кстати, что такое «облачная инфраструктура» • Joyent портировали KVM из Linux в SmartOS • And now: Manta!
  • 8. ZFS
  • 9. Словарик для людей из мира Linux • «физический том» = «vdev» • «группа томов» = «pool» • «раздел» = «dataset» • «логический том» = «ZVOL» • «RAID1» = «mirror» • «RAID5» ~ «raidz», «raidz1» • «RAID5» ~ «raidz2» • «RAID7(?)» ~ «raidz3»
  • 10. Особенности ZFS • Умное двухуровневое кэширование: • ARC – кэш в памяти • L2ARC – кэш на SSD • Запись (record) размером от 512 байт до 128 Кбайт • ^ каждая запись имеет контрольную сумму • Размер записи задается отдельно для каждого dataset • Возможность сжатия записей (больше размер записи – эффективное сжатие) • Снэпшоты! • Copy on Write – данные никогда не перезаписываются
  • 11. Особенности ZFS • Дедупликация • Не бесплатна – требует место в оперативной памяти под таблицы дедупликации • zfs send/receive – чтение данных из снэпшота в stdout и наоборот • zfs send/receive можно делать инкрементально (между двумя последовательными снэпшотами, что позволяет организовать подобие репликации на read-only раздел в другой локации
  • 12. Снэпшоты • Создание – практически бесплатно • Я делал несколько тысяч снэпшотов на пуле (3-4 тысячи) • Удаление – не бесплатно, может вызывать нагрузку на диск • Снэпшоты – только для чтения • Клоны снэпшотов – возможна запись
  • 13. Сценарии использования снэпшотов • Сценарий 1: • Частые локальные бэкапы для защиты от логических сбоев • Так нельзя защититься от физического сбоя, нужен zfs send/receive • Сценарий 2: • Создание однотипных окружений путем клонирования эталонного снэпшота • Девелоперская база в несколько десятков гигабайт – каждому девелоперу делается свой клон эталонного снэпшота • Уменьшает время развертывания окружений • Экономит место на диске
  • 14. DTrace • Динамический фреймворк профайлинга приложений • В том числе, позволяет профайлить ядро ОС • Предназначен для работы в продакшне с минимальным оверхедом • ^ Оверхед зависит от числа активных DTrace probes (датчиков) • Язык D (не путать с языком программирования D) – скрипты описания сессий профилирования • Необходимо инструментировать фреймворки/библиотеки/VMs – расстановка probes
  • 15. Язык D provider : module : function : name / predicate / { action } •Нет циклов/ветвлений •Нет пользовательских функций
  • 16. Пример 1 – «горячие» точки PostgreSQL • Задача – посмотреть, чем занят движок базы данных • Задача имеет классическое решение – сборка сэмплов стектрейсов через равные промежутки времени и их анализ • Как можно собирать сэмплы? • gdb, http://poormansprofiler.org – нужны debug symbols и агрегация/анализ в (полу)ручном режиме • DTrace! • Кстати, готов поспорить, база, в основном, занята работой с диском!
  • 17. Пример 1 – «горячие» точки PostgreSQL #!/usr/sbin/dtrace -s profile-997 /arg1/ { @a[execname, ufunc(arg1)] = count(); } tick-60s { trunk(@a, 5); exit(0); }
  • 18. Пример 2 – поиск пути исполнения • Задача – найти, как мы попали в это неуютное (функция возвращает ошибку при (не)определенных условиях) • Как решать без DTrace? • Вызвать падение по SIGSEGV в месте возврата ошибки, собрать coredump, поглядеть backtrace • Необходима модификация и пересборка приложения • Упасть по SIGSEGV в продакшн окружении? Нет пути! • DTrace не требует пересборки и модификации и позволяет получить стектрейс вплоть до вызовов ядра
  • 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. Пример 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. Zones • Контейнерная виртуализация или • ОС-виртуализация • Аналоги – OpenVZ, jails во FreeBSD • Минимальный оверхед • Ограничение потребления ресурсов • ^ можно менять динамически
  • 22. Network virtualization • VNICs over NICs • Virtual switching • Link aggregation • Routing • NAT & IPFilter • VLANs over VNICs
  • 23. Manta • Выпущена 4 месяца назад • Объектное хранилище для BigData • Если гора не идет к Магомету (integrated computing) • Реализовано на динамически создаваемой Zone • Время создания зоны 9 мкс • Обработчики на любом языке
  • 24. Почему всего этого нет в мире Linux? • В мире Linux своя магия • Кроме того, CDDL несовместима с GPL
  • 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. Кейс 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. Кейс 2. Git in Sky. Маркетинговый сервис • Посещаемость около 100 тыс. уников в день • LAMP-стек • Организованы бэкапы через ZFS snapshots • Была утеряна почта с важной коммерческой информацией на сумму несколько миллионов рублей • Восстановление из ZFS-snapshots по указанной дате спасло деньги!
  • 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. Кейс 4. Joyent & Voxer • Voxer делает из вашего телефона рацию walkie-talkie. • База пользователей выросла за месяц в 30 раз. Linux based storage не справился. • DTracing Node.js apps • DTracing процессы низкого уровня • Улучшили производительность • Сократили в разы время ожидания
  • 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. Выводы • Linux – это хорошо, но недостаточно хорошо • Если выйти за пределы экосистемы Linux, можно получить новые возможности, такие как Возможность профилирования приложений Расширенные возможности организации хранилища Легкая защита от логических сбоев Легкая, с массой новых возможностей, организация бэкапов/восстановлений • Новый способ работы с BigData • • • •
  • 32. Вопросы? • Спасибо за внимание! • С вами были Сергей Житинский и Александр Чистяков • [email protected][email protected] • Компания Git In Sky

Editor's Notes