In his talk, Max Mazur a DevOps Engineer at Grid Dynamics, shares his experience deploying to production despite unexpected loads using the example of the web application (RTB). There you can find specific cases of using MySQL and resolving solutions. Technology stack: Linux, MySQL, PHP, Nginx, Kafka, Redis, Gearman
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
Ваш сайт или другой проект приносит деньги только тогда, когда он работает.
Нельзя просто выложить код на серверы, залить схему в базу данных и делегировать домен.
Будем говорить о планировании отказоустойчивости и мониторинге проектов:
- оцениваем риски отказа различных компонентов;
- какие-то из вероятных проблем просто мониторим и планируем действия при сбоях;
- проблемы, которых можно избежать легко и дешево, закрываем сразу.
Расскажу на примерах о том, что всё всегда ломается, но с этим можно жить.
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
WebWorkers имеют глобальное покрытие в 92% по данным http://caniuse.com. Тем не менее, не всякое современное веб-приложение использует их.
В своем докладе я постараюсь передать двухлетний опыт использования WebWorkers в нашей команде для написания веб-приложений с функциональностью, которая требует выполнения тяжелых вычислений, таких как преобразование бинарых файлов из одного формата в другой и шифрование.
Расскажу про эксперименты по переносу в воркер расчета diff'ов в React-подобной системе рендеринга и покажу наивную реализацию модели акторов на основе воркеров.
Также постараюсь подготовить слушателей к новым проблемам, которые могут возникнуть при использовании веб-воркеров.
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Ontico
- WatchDog. Что это такое? Схема реализации с таймером и схема реализации на RunLoop'e.
- Как собирать результат работы WatchDog. Примеры того, что можно таким образом найти, и что мы нашли на проекте ICQ.
- Как работать с полученными результатами. Анализ стеков потоков. Профилирование с учетом расходов на синхронизацию.
- Проблемы при работе с WatchDog. Системные механизмы и популярные библиотеки, вызывающие проблемы. Методы обхода этих проблем. Итоговые параметры, применяемые на проекте ICQ.
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
В MySQL 5.7 появился целый ряд новых возможностей, позволяющих использовать MySQL в приложениях и как хранилище JSON-документов, и как реляционную базу данных.
В этом докладе мы расскажем о поддержке JSON в MySQL 5.7, а также поговорим о том, когда имеет смысл её использовать, и насколько хорошо она работает. Кроме того, мы остановимся на новом протоколе доступа к MySQL, поддерживающем SQL. Помимо этого, мы рассмотрим CRUD-операции и такие дополнительные функции, как асинхронная коммуникация и пайплайнинг (pipelining).
В заключительной части доклада мы расскажем о возможностях MySQL 5.7 в качестве хранилища документов.
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Ontico
В докладе будут описаны паттерны использования очередей и блокировок, рассказано, зачем нужны очереди и блокировки, показано на примерах использования в разных архитектурах.
Описано применение синхронных и асинхронных очередей, как построить очереди с приоритетами.
Будет сравнение разных серверов очередей: Redis, Tarantool, RabbitMQ, ZMQ, Kafka, Zookeeper, MemcacheQ и др., их преимущества и недостатки, где и какой брокер лучше использовать.
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
Ваш сайт или другой проект приносит деньги только тогда, когда он работает.
Нельзя просто выложить код на серверы, залить схему в базу данных и делегировать домен.
Будем говорить о планировании отказоустойчивости и мониторинге проектов:
- оцениваем риски отказа различных компонентов;
- какие-то из вероятных проблем просто мониторим и планируем действия при сбоях;
- проблемы, которых можно избежать легко и дешево, закрываем сразу.
Расскажу на примерах о том, что всё всегда ломается, но с этим можно жить.
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
WebWorkers имеют глобальное покрытие в 92% по данным http://caniuse.com. Тем не менее, не всякое современное веб-приложение использует их.
В своем докладе я постараюсь передать двухлетний опыт использования WebWorkers в нашей команде для написания веб-приложений с функциональностью, которая требует выполнения тяжелых вычислений, таких как преобразование бинарых файлов из одного формата в другой и шифрование.
Расскажу про эксперименты по переносу в воркер расчета diff'ов в React-подобной системе рендеринга и покажу наивную реализацию модели акторов на основе воркеров.
Также постараюсь подготовить слушателей к новым проблемам, которые могут возникнуть при использовании веб-воркеров.
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Ontico
- WatchDog. Что это такое? Схема реализации с таймером и схема реализации на RunLoop'e.
- Как собирать результат работы WatchDog. Примеры того, что можно таким образом найти, и что мы нашли на проекте ICQ.
- Как работать с полученными результатами. Анализ стеков потоков. Профилирование с учетом расходов на синхронизацию.
- Проблемы при работе с WatchDog. Системные механизмы и популярные библиотеки, вызывающие проблемы. Методы обхода этих проблем. Итоговые параметры, применяемые на проекте ICQ.
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
В MySQL 5.7 появился целый ряд новых возможностей, позволяющих использовать MySQL в приложениях и как хранилище JSON-документов, и как реляционную базу данных.
В этом докладе мы расскажем о поддержке JSON в MySQL 5.7, а также поговорим о том, когда имеет смысл её использовать, и насколько хорошо она работает. Кроме того, мы остановимся на новом протоколе доступа к MySQL, поддерживающем SQL. Помимо этого, мы рассмотрим CRUD-операции и такие дополнительные функции, как асинхронная коммуникация и пайплайнинг (pipelining).
В заключительной части доклада мы расскажем о возможностях MySQL 5.7 в качестве хранилища документов.
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Ontico
В докладе будут описаны паттерны использования очередей и блокировок, рассказано, зачем нужны очереди и блокировки, показано на примерах использования в разных архитектурах.
Описано применение синхронных и асинхронных очередей, как построить очереди с приоритетами.
Будет сравнение разных серверов очередей: Redis, Tarantool, RabbitMQ, ZMQ, Kafka, Zookeeper, MemcacheQ и др., их преимущества и недостатки, где и какой брокер лучше использовать.
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Ontico
Вне зависимости от размера инфраструктуры, весьма сложно разобраться в проблемах, обнаруженных системой мониторинга, особенно если их сотни или тысячи. Они могут быть о железе, приложениях, связаны с безопасностью, тестовыми и продакшн средами, различными датацентрами и сервисами. Как эффективно управлять этой сложностью? Как удобно отображать проблемы для коллег, отвечающих за различные куски инфраструктуры?
Новая мажорная версия Zabbix 3.2 революционна и отвечает на эти вопросы!
Модуль корреляции событий на глобальном уровне и уровне одной проблемы, система тагов, новая супер быстрая панель для отображения проблем, вложенные группы устройств, возможность ручного закрытия проблем и многое другое позволяют построить эффективный мониторинг любого размера или качественно улучшить существующий.
Я расскажу о новой функциональности и покажу, как её использовать для построения, в том числе, сервис-ориентированного мониторинга. Многие вещи стали намного проще. Иногда может быть достаточно одного триггера для мониторинга всех сервисов или приложений компании. Фантастика! Как это возможно? Приходите и узнаете.
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Ontico
Репликация - одна из ключевых возможностей MySQL. Лёгкая в установке, позволяющая производить изменения и на мастере, и на слейве, что в свою очередь позволяет создавать сколь угодно сложные развёртывания. Репликация в MySQL асимметричная, допускающая некоторый уровень синхронизации при помощи semi-sync replication plugin. Начиная с версии 5.7 поддерживает одновременную репликацию с нескольких мастеров на один слейв.
Простота использования имеет свою обратную сторону: при проектировании репликации достаточно легко выбрать неправильное решение и познакомиться со всеми его подводными камнями.
В рамках этого доклада я расскажу об особенностях репликации MySQL, типичных ошибках и способах борьбы с ними. Мы затронем как проблемы, приводящие к появлению неожиданных данных и десинхронизации, так и производительность.
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
Если вы сталкивались с PostgreSQL и зашли дальше, чем инструкция по установке, то, скорей всего, коротко познакомились с вакуумом, ну или, как минимум, что-то слышали про него.
Вакуум или по-русски очистка - это важная задача в жизненном цикле постгреса, которая заключается в регулярном освобождении базы данных от, так скажем, "мусора". Вакуум очень важен, его нельзя игнорировать и тем более отключать; более того, ему следует уделять должное внимание. А за кажущейся простотой скрывается довольно сложный и интересный механизм, к работе которого очень часто возникает много вопросов, на которые не всегда можно найти однозначный ответ.
В этом докладе я буду рассказывать про внутреннее устройство вакуума и раскрою следующие вопросы:
1) Что такое автовакуум (вакуум) и заморозка, и как они устроены изнутри.
2) Какие решения принимаются в процессе обработки таблиц и индексов.
3) Какие существуют возможности для управления вакуумом и как эти возможности влияют на работу вакуума.
4) Вакуум и вопрос производительности.
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрению Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
Общедоступные программы и библиотеки подкупают своей бесплатностью. Если же исходный код открыт, то все сразу думают, что «умные дядьки уже исправили всё, что нужно». На практике же оказывается, что грабли разложены там, где их мало кто ждёт. Тормозит всё, кроме, разве что, самой java. В докладе мы рассмотрим примеры проблем производительности при использовании таких библиотек как Wildfly, Spring, HornetQ, pgjdbc.
Например, оказывается, что spring.getBean тормозит, а в комбинации с autoproxy вообще может занимать до 50% времени приложения. Cglib мешает работе garbage collector’а в попытках проксировать Object#finalize, а HornetQ внезапно притормаживает отправку JMS, что запросто приводит к 5-и секундным задержкам на одно сообщение. Узнаем как их опознать и обезвредить.
Чему мы научились разрабатывая микросервисы?Vadim Madison
Доклад с конференции Backend Conf 2016
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
Широко распространено мнение, что SQL СУБД обречены быть медлительными и неповоротливыми, поскольку несут груз совместимости с предыдущими версиями. Это расхожее мнение широко эксплуатируется маркетингом NoSQL СУБД. Однако, это не всегда действительно так.
Разработка в Open Source сообществе позволяет продукту развиваться достаточно гибко, чтобы отвечать требованиям времени. В MySQL и PostgreSQL – самых популярных Open Source СУБД – недавно были проведены оптимизации для работы на больших серверах, что позволило им выполнять более миллиона SQL-запросов в секунду на одном экземпляре БД.
В данном докладе будут рассмотрены конкретные оптимизации, которые позволили добиться таких результатов, которые раньше могли бы показаться фантастическими. И можно сказать, что Open Source СУБД вошли в эру миллионов запросов в секунду.
Слайды с РИТ (Highload Junior) 31 мая - 1июня 2016
В докладе рассказывается о практическом применении серверов очередей и блокировок в высоко-нагруженных проектах
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Ontico
Доклад о новинках нового релиза PostgreSQL можно сделать экстремально скучным: взять release-notes и зачитать вслух. Но 9.5 обещает быть очень интересным релизом как с точки зрения улучшения производительности, так и функциональности - было бы жалко сделать о нем плохой доклад. Поэтому я выбрал несколько важных и нужных фич и расскажу про каждую - как она устроена, на что влияет и, главное, как ей разумно воспользоваться - максимум практических аспектов, минимум маркетинга. Без этого минимума нельзя, иначе мне никак не поделиться своим взглядом на то, как сейчас развивается PostgreSQL, и как жить пользователям Postgres'а при такой стратегии развития.
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
РИТ++ 2017, HighLoad Junior
Зал Сингапур, 5 июня, 11:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2683.html
Наш доклад описывает способ использования больших объемов памяти, которые стали доступны в последние годы. К сожалению, эта память обычно остается незадействованной в управляемых средах исполнения в связи с принудительной сборкой мусора. Разработчики прибегают к внешним хранилищам данных ( i.e Memcached), что несет дополнительные расходы.
...
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico
«Одноклассники» состоят из тысяч серверов, большая часть которых участвует в онлайн-обработке запросов пользователей. Каждый из этих серверов владеет только частью данных или логики. Эти части в социальной сети изолировать друг от друга невозможно, поэтому между серверами происходит много сетевого взаимодействия — разнообразного и большого по объему. Таким образом, Одноклассники — это одна из самых больших, сложных и нагруженных распределенных систем в мире.
В этом докладе Олег расскажет об опыте построения отказоустойчивых распределенных систем на Java, основных ошибках и отказах, приемах их тестирования и диагностики. Также речь пойдет об авариях в распределенных системах и методах их предупреждения.
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)Ontico
Вне зависимости от размера инфраструктуры, весьма сложно разобраться в проблемах, обнаруженных системой мониторинга, особенно если их сотни или тысячи. Они могут быть о железе, приложениях, связаны с безопасностью, тестовыми и продакшн средами, различными датацентрами и сервисами. Как эффективно управлять этой сложностью? Как удобно отображать проблемы для коллег, отвечающих за различные куски инфраструктуры?
Новая мажорная версия Zabbix 3.2 революционна и отвечает на эти вопросы!
Модуль корреляции событий на глобальном уровне и уровне одной проблемы, система тагов, новая супер быстрая панель для отображения проблем, вложенные группы устройств, возможность ручного закрытия проблем и многое другое позволяют построить эффективный мониторинг любого размера или качественно улучшить существующий.
Я расскажу о новой функциональности и покажу, как её использовать для построения, в том числе, сервис-ориентированного мониторинга. Многие вещи стали намного проще. Иногда может быть достаточно одного триггера для мониторинга всех сервисов или приложений компании. Фантастика! Как это возможно? Приходите и узнаете.
Эффективная отладка репликации MySQL / Света Смирнова (Percona)Ontico
Репликация - одна из ключевых возможностей MySQL. Лёгкая в установке, позволяющая производить изменения и на мастере, и на слейве, что в свою очередь позволяет создавать сколь угодно сложные развёртывания. Репликация в MySQL асимметричная, допускающая некоторый уровень синхронизации при помощи semi-sync replication plugin. Начиная с версии 5.7 поддерживает одновременную репликацию с нескольких мастеров на один слейв.
Простота использования имеет свою обратную сторону: при проектировании репликации достаточно легко выбрать неправильное решение и познакомиться со всеми его подводными камнями.
В рамках этого доклада я расскажу об особенностях репликации MySQL, типичных ошибках и способах борьбы с ними. Мы затронем как проблемы, приводящие к появлению неожиданных данных и десинхронизации, так и производительность.
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
Если вы сталкивались с PostgreSQL и зашли дальше, чем инструкция по установке, то, скорей всего, коротко познакомились с вакуумом, ну или, как минимум, что-то слышали про него.
Вакуум или по-русски очистка - это важная задача в жизненном цикле постгреса, которая заключается в регулярном освобождении базы данных от, так скажем, "мусора". Вакуум очень важен, его нельзя игнорировать и тем более отключать; более того, ему следует уделять должное внимание. А за кажущейся простотой скрывается довольно сложный и интересный механизм, к работе которого очень часто возникает много вопросов, на которые не всегда можно найти однозначный ответ.
В этом докладе я буду рассказывать про внутреннее устройство вакуума и раскрою следующие вопросы:
1) Что такое автовакуум (вакуум) и заморозка, и как они устроены изнутри.
2) Какие решения принимаются в процессе обработки таблиц и индексов.
3) Какие существуют возможности для управления вакуумом и как эти возможности влияют на работу вакуума.
4) Вакуум и вопрос производительности.
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
Покажу как выпилить пароли/сертификаты/важные данные из репозиториев. Дам всю необходимую информацию для внедрению Hashicorp Vault в вашей компании и команде. Сделаю акцент на использовании в контейнерных инфраструктурах. Рассмотрю продвинутые практики использования и юз-кейсы с вау эффектом, которые работают в реальной жизни. Тут будут звучать такие слова как Ansible, Chef, Puppet, Docker, Swarm, Kubernetes etc.
Доклад, который сможет помочь сделать все хорошо, даже если сейчас все плохо.
Общедоступные программы и библиотеки подкупают своей бесплатностью. Если же исходный код открыт, то все сразу думают, что «умные дядьки уже исправили всё, что нужно». На практике же оказывается, что грабли разложены там, где их мало кто ждёт. Тормозит всё, кроме, разве что, самой java. В докладе мы рассмотрим примеры проблем производительности при использовании таких библиотек как Wildfly, Spring, HornetQ, pgjdbc.
Например, оказывается, что spring.getBean тормозит, а в комбинации с autoproxy вообще может занимать до 50% времени приложения. Cglib мешает работе garbage collector’а в попытках проксировать Object#finalize, а HornetQ внезапно притормаживает отправку JMS, что запросто приводит к 5-и секундным задержкам на одно сообщение. Узнаем как их опознать и обезвредить.
Чему мы научились разрабатывая микросервисы?Vadim Madison
Доклад с конференции Backend Conf 2016
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
Широко распространено мнение, что SQL СУБД обречены быть медлительными и неповоротливыми, поскольку несут груз совместимости с предыдущими версиями. Это расхожее мнение широко эксплуатируется маркетингом NoSQL СУБД. Однако, это не всегда действительно так.
Разработка в Open Source сообществе позволяет продукту развиваться достаточно гибко, чтобы отвечать требованиям времени. В MySQL и PostgreSQL – самых популярных Open Source СУБД – недавно были проведены оптимизации для работы на больших серверах, что позволило им выполнять более миллиона SQL-запросов в секунду на одном экземпляре БД.
В данном докладе будут рассмотрены конкретные оптимизации, которые позволили добиться таких результатов, которые раньше могли бы показаться фантастическими. И можно сказать, что Open Source СУБД вошли в эру миллионов запросов в секунду.
Слайды с РИТ (Highload Junior) 31 мая - 1июня 2016
В докладе рассказывается о практическом применении серверов очередей и блокировок в высоко-нагруженных проектах
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...Ontico
Доклад о новинках нового релиза PostgreSQL можно сделать экстремально скучным: взять release-notes и зачитать вслух. Но 9.5 обещает быть очень интересным релизом как с точки зрения улучшения производительности, так и функциональности - было бы жалко сделать о нем плохой доклад. Поэтому я выбрал несколько важных и нужных фич и расскажу про каждую - как она устроена, на что влияет и, главное, как ей разумно воспользоваться - максимум практических аспектов, минимум маркетинга. Без этого минимума нельзя, иначе мне никак не поделиться своим взглядом на то, как сейчас развивается PostgreSQL, и как жить пользователям Postgres'а при такой стратегии развития.
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
РИТ++ 2017, HighLoad Junior
Зал Сингапур, 5 июня, 11:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2683.html
Наш доклад описывает способ использования больших объемов памяти, которые стали доступны в последние годы. К сожалению, эта память обычно остается незадействованной в управляемых средах исполнения в связи с принудительной сборкой мусора. Разработчики прибегают к внешним хранилищам данных ( i.e Memcached), что несет дополнительные расходы.
...
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico
«Одноклассники» состоят из тысяч серверов, большая часть которых участвует в онлайн-обработке запросов пользователей. Каждый из этих серверов владеет только частью данных или логики. Эти части в социальной сети изолировать друг от друга невозможно, поэтому между серверами происходит много сетевого взаимодействия — разнообразного и большого по объему. Таким образом, Одноклассники — это одна из самых больших, сложных и нагруженных распределенных систем в мире.
В этом докладе Олег расскажет об опыте построения отказоустойчивых распределенных систем на Java, основных ошибках и отказах, приемах их тестирования и диагностики. Также речь пойдет об авариях в распределенных системах и методах их предупреждения.
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
Every company comes to a point where it’s infrastructure no longer fits team and business needs, and kludges are not working anymore. That’s the time to re-think and redesign the whole infrastructure. This is exactly where our company was half a year ago. I will talk about our experience dealing with this challenge while balancing between existing technology, costs, today’s reality and future needs.
Борис Павлович - Производительность и масштабируемость OpenStack Yandex
В докладе прозвучали ответы на вопросы о том, что такое OpenStack, зачем он нужен, что подразумевается под его производительностью и масштабируемостью и как тестировать эти качества, если у вас нет своего дата-центра. На примере проекта Rally вы узнали, как полностью автоматизировать тестирование. Было рассказано о проблемах, которые возникли при разработке Rally. Завершился доклад рассказом о том, с какими сложностями, касающимися масштабируемости и производительности OpenStack, ещё предстоит справиться.
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
CI/CD-приложений на Tarantool: от пустого репозитория — до продакшнаMail.ru Group
Константин рассказал про новый подход в структурировании и поставке приложений в Tarantool:
как управлять зависимостями (rockspec + друзья);
как писать и запускать юнит- и интеграционные тесты;
покажу превью нового тестового фреймворка для приложений;
как паковать приложения вместе с зависимостями (и почему мы выбрали статическую линковку);
как задеплоить в продакшн с systemd.
Similar to Deployment to production with an unexpected load (20)
Industry-leading brands have adapted to the ever-changing business environment and consumer expectations significantly faster than the competition. The key driving factor behind this speed-to-market is the adoption of intelligent cloud-native digital commerce architectures. In our talk, we will describe the best practices and case studies of achieving business agility that is imperative to excel in the post-pandemic era.
"Implementing data quality automation with open source stack" - Max Martynov,...Grid Dynamics
The quality of business decisions, machine learning insights, and executive reports depend on the quality and integrity of the underlying data. There are many ways that data can get corrupted in an analytical data platform from de-synchronization with the system-of-record to defects in data pipelines. We will show how to detect and prevent data corruption with automation, open-source tools, and machine learning.
"How to build cool & useful voice commerce applications (such as devices like...Grid Dynamics
In this talk, we describe how to build conversational e-commerce applications for the growing market of voice-powered AI devices using Dialog Flow. This talk demonstrates the capabilities of "Flower Genie," a teaching-oriented chatbot that can recommend a bouquet for any occasion, then take an order and deliver the flower arrangement via Alexa. We present the overall architecture of a voice application developed with Dialog Flow, including dialog management and NLU, and then discuss the finer points of testing and publishing a voice application for Alexa.
"Challenges for AI in Healthcare" - Peter Graven Ph.DGrid Dynamics
Dynamic Talks Portland: The use of AI in many industries has revolutionized operations and efficiency. In healthcare, the progress is just beginning. Despite the promise of AI, why has the development lagged other industries? What issues are unique to healthcare that create challenges for common approaches? How can data scientists overcome these challenges and deliver on the promise of using data to reach multiple goals of improved quality, decreased cost, and greater patient satisfaction?
Dynamic Talks: "Applications of Big Data, Machine Learning and Artificial Int...Grid Dynamics
The global HIV pandemic continues, particularly in Sub-Saharan Africa. By 2025, 40 million people will be living with HIV. The global cost of the pandemic is in the hundreds of billions of dollars. Better treatment means more people are living longer and costs will increase. The use of existing and emerging technologies is rare. Research institutions don’t share data. Data that drive US HIV policy in 2019 are from 2017 because of the time it takes for the CDC and NIH to combine data. The are many opportunities for big data, ML and AI to have a broader and continued impact on the HIV crisis. The use of these technologies can identify new avenues of research and help prioritize and focus efforts. We are starting to see these technologies used more and more. Several case studies will be presented. For example, advances in HIV vaccine research by Dr. David Heckerman; research at UCLA and Georgetown University looking at how social media can be used for tracking and predicting the spread of the epidemic; and work by researchers to improve care utilization in South Carolina. The opportunities for commercial and non-profit ventures to apply existing and emerging technologies like big data, ML and AI are countless. Tech4HIV is an organization working to drive these efforts into the tech sector and provides opportunities and resources for engagement.
Dynamic Talks: "Digital Transformation in Banking & Financial Services… a per...Grid Dynamics
Retail industry has gone through a significant transformation in the last decade; caused by the change in consumer behaviour and expectations which have been driven by the convenience and low cost offered by Amazon. There are clear signs of a similar disruption in the financial services industry now, driven by new entrants who are changing consumer expectations. In this talk, Rahul looks at the evolution of retailers and draws conclusions about the path players in the financial services have to take to compete and provide customer experiences that will be necessary to compete.
Dynamic Talks: "Data Strategy as a Conduit for Data Maturity and Monetization...Grid Dynamics
Organizations need to tap into the huge potential of their vast volumes of data, but a use case tactical approach is not going to work. Instead, they need to work in the definition of a data strategy linked to the most relevant goals for the enterprise.
Dynamics Talks: "Writing Spark Pipelines with Less Boilerplate Code" - Egor P...Grid Dynamics
Apache Spark is a general-purpose big data execution engine. You can work with different data sources with the same set of API in both batch and streaming mode. Such flexibility is great if you are experienced Spark developer solving a complicated data engineering problem, which might include ML or streaming. In Airbnb, 95% of all data pipelines are daily batch jobs, which read from Hive tables and write to Hive tables. For such jobs, you would like to trade some flexibility for more extensive functionality around writing to Hive or multiple days processing orchestration. Another advantage of reducing flexibility is creating "best practices", which can be followed by less experienced data engineers. In Airbnb, we've created a framework called "Sputnik," which tries to address these issues. In this talk, I'll show the typical boilerplate code, which Sputnik tries to reduce and concepts it introduces to simplify pipeline development.
The New Era of Public Safety Records Management: Dynamic talks Chicago 9/24/2019Grid Dynamics
For businesses large and small, cloud-based software platforms are breaking down data siloes between teams, adding new capabilities, and boosting efficiency. While not known as early adopters, there's a compelling case for public safety to do the same. In this session, we'll explore how a comprehensive records and evidence platform can simplify operations and streamline data management and access, securely and responsibly. We'll also highlight the role of artificial intelligence, and how it can help agencies respond more quickly and improve outcomes.
Dynamic Talks: "Implementing data quality automation with open source stack" ...Grid Dynamics
The quality of business decisions, machine learning insights, and executive reports depend on the quality and integrity of the underlying data. There are many ways that data can get corrupted in an analytical data platform from de-synchronization with the system-of-record to defects in data pipelines. We will show how to detect and prevent data corruption with automation, open source tools, and machine learning.
"Implementing AI for New Business Models and Efficiencies" - Parag Shrivastav...Grid Dynamics
Dynamic talks Seattle: Artificial Intelligence (AI) and data are foundational to ideation of new business models that bring growth and efficiencies. This is in action in pharmaceutical supply chain for reducing costs, increasing volumes, and optimizing the contracts with suppliers. The implementation involves process and tools that make data usable, and overcome the challenges of culture, ethics, data scalability, compute and engineering, and. Learn about data collection, data management, and metadata management tools implementation and modern data architecture to support them. Discuss machine learning algorithms for growth and efficiency scenarios.
Reducing No-shows and Late Cancelations in Healthcare Enterprise" - Shervin M...Grid Dynamics
Dynamic Talks Seattle: Patient No-shows and Late Cancelations is estimated to cost around $150B across the nation. Providence St. Joseph Health, Healthcare Intelligence Group has been working on this pain point for the past couple of years and has developed a software solution leveraging a predictive engine to identify high risk patients at risk of No-show and Late Cancellation on a daily basis. More than 25 clinics have been using this solution for about 2 years now to optimize their reminder call strategy and to have a meaningful reduction of No-shows and Late Cancellations. In addition, a call center pilot was designed recently to standardize this process end-end. Pilot results will be evaluated to prove the impact at scale.
Customer intelligence: a Machine Learning Approach: Dynamic talks Atlanta 8/2...Grid Dynamics
In this talk, we will discuss automatic decision-making and AI techniques for customer relationship management. First, we will present a methodology that helps to develop highly automated promotion and loyalty management systems. Next, we will walk through practical examples of how advanced customer and content signals can be generated using predictive models, and how optimization and reinforcement learning techniques can be used for targeting, budgeting, and pricing decisions. This talk is for Data Scientists, Product Owners, and Software Engineers involved in marketing operations or development of marketing automation software and interested in ML-based decision automation techniques.
"ML Services - How do you begin and when do you start scaling?" - Madhura Dud...Grid Dynamics
Dynamic talks SF: So you have heard all the hype around how Machine Learning is going to change the world. But within your business context, where do you start? How do you get leadership buy-in for investment? And how and when you start scaling your ML Services?
In this session, you will walk away with an actionable framework to bootstrap and scale a machine learning services team. You will see the framework in action through an actual 0 to 1 product journey involving deep learning where we delivered value in record speed in-spite of not having a dataset when we started. You will get practical tips on how to make decisions about when and how to scale your capability to scale ML Services and platform. Some of the tips are pretty counterintuitive and revealed themselves with our experience of productizing ML services over the last 5+ years. (Using a diverse range of technologies - Vision, Language, Graph, Anomaly Detection, Search Relevance, Personalization)
Realtime Contextual Product Recommendations…that scale and generate revenue -...Grid Dynamics
Dynamic Talks SF: Recommendation systems are all around us. E-commerce companies like Amazon recommend products we are likely to buy based on our browsing behavior. Netflix suggests what shows we should watch based on our binging habits. Spotify builds a personalized playlist we would enjoy listening to, based on their understanding of what musical genre we are into.
In this talk, we will explore recent advances in the area of product recommendations in both research and practice. We will see how machine learning, design thinking and solid data engineering principles are combined to create an engaging customer experience that positively impacts the bottom line.
We will look at how we use various deep learning architectures to obtain image and text embeddings that supplement user and product based features to generate product recommendations that align closely with a consumer’s aesthetic preferences.
The talk would be of interest to data scientists, data engineers, product managers, UX designers and anyone interested in machine learning.
Decision Automation in Marketing Systems using Reinforcement Learning: Dynami...Grid Dynamics
In this talk, we will discuss automatic decision-making and AI techniques for customer relationship management. First, we will present a methodology that helps to develop highly automated promotion and loyalty management systems. Next, we will walk through practical examples of how predictive models can be used to characterize customer intent, and how optimization and reinforcement learning techniques can be used to build next best action models that incorporate targeting, budgeting, and pricing decisions.
Best practices for enterprise-grade microservices implementations with Google...Grid Dynamics
When migrating to a cloud and microservices architecture, companies need to invest in foundational capabilities, such as a microservices platform, continuous delivery, and an immutable infrastructure. In this talk, we will discuss our experience implementing these capabilities on the enterprise-scale with Google Cloud, Kubernetes, Istio, Envoy, Spinnaker, and Hashicorp stack. We will also discuss best practices of onboarding the cloud to facilitate DevOps, SRE without sacrificing quality or control.
Attribution Modelling 101: Credit Where Credit is Due!: Dynamic talks Seattle...Grid Dynamics
Abstract: In this talk, Scott will go over the basics of Attribution Modelling, its advantages and disadvantages, and strategic ways to implement in the cloud leveraging big data.
Building an algorithmic price management system using ML: Dynamic talks Seatt...Grid Dynamics
In this talk, we will discuss how predictive modeling and reinforcement learning can be used to build advanced price management systems that unlock the potential of dynamic and personalized pricing. We will present price optimization methods for a number of use cases including introductory pricing, promotion calendars, replenishable and seasonal products, targeted offers, and flash sales. We will also review case studies that demonstrate how these methods were applied in practice and how algorithmic price management components were fitted into pricing strategies.
4. Содержание
• Коротко о проекте
• Deployment plan который мы придумали
• Особенности MySQL 5.7 (некоторые частные случаи)
• О проблемах (и решениях конечно же)
• Выводы которые я сделал для себя
7. Пару-тройку слов о проекте
• Есть web-приложение (оно как-то связано с рекламой). Умные люди называют это RTB
8. Пару-тройку слов о проекте
• Есть web-приложение (оно как-то связано с рекламой). Умные люди называют это RTB
• Я участвовал в deployment в production (в роли "пожарной команды")
9. Пару-тройку слов о проекте
• Есть web-приложение (оно как-то связано с рекламой). Умные люди называют это RTB
• Я участвовал в deployment в production (в роли "пожарной команды")
• И хочу рассказать о том как это происходило и с каким проблемами пришлось столкнуться
10. Пару-тройку слов о проекте
• Есть web-приложение (оно как-то связано с рекламой). Умные люди называют это RTB
• Я участвовал в deployment в production (в роли "пожарной команды")
• И хочу рассказать о том как это происходило и с каким проблемами пришлось столкнуться
• Хотя таких рассказов есть over 100500 надеюсь мой тоже будет полезным
11. Пару-тройку слов о проекте
• Есть web-приложение (оно как-то связано с рекламой). Умные люди называют это RTB
• Я участвовал в deployment в production (в роли "пожарной команды")
• И хочу рассказать о том как это происходило и с каким проблемами пришлось столкнуться
• Хотя таких рассказов есть over 100500 надеюсь мой тоже будет полезным
• Собрал все "грабли" какие только были J
15. Постановка задачи
• Сроки горят
• Нужно быстро подготовить окружение для production
• Починить что сломается
16. Постановка задачи
• Сроки горят
• Нужно быстро подготовить окружение для production
• Починить что сломается
• Что не сломаются – сломать, а потом тоже починить
37. А теперь шутки в стороны
1. Имеется три сервер All-in-One в разных регионах
38. А теперь шутки в стороны
1. Имеется три сервер All-in-One в разных регионах
2. На них уже пустили часть "боевого" трафика
39. А теперь шутки в стороны
1. Имеется три сервер All-in-One в разных регионах
2. На них уже пустили часть "боевого" трафика
3. Нужно выкатить мульти-серверную конфигурацию
40. А теперь шутки в стороны
1. Имеется три сервер All-in-One в разных регионах
2. На них уже пустили часть "боевого" трафика
3. Нужно выкатить мульти-серверную конфигурацию
4. Несколько регионов и несколько разных ролей. Что-то около 15 серверов
51. MySQL: Миграция базы
1. Совсем без downtime не вышло
2. ALTER TABLE ... ADD COLUMN `region` NOT NULL ...
52. MySQL: Миграция базы
1. Совсем без downtime не вышло
2. ALTER TABLE ... ADD COLUMN `region` NOT NULL ...
3. Модифицировать код (не сложно)
53. MySQL: Миграция базы
1. Совсем без downtime не вышло
2. ALTER TABLE ... ADD COLUMN `region` NOT NULL ...
3. Модифицировать код (не сложно)
4. Остановить трафик (nginx: return 204)
54. MySQL: Миграция базы
1. Совсем без downtime не вышло
2. ALTER TABLE ... ADD COLUMN `region` NOT NULL ...
3. Модифицировать код (не сложно)
4. Остановить трафик (nginx: return 204)
5. Включить binlog и GTID
55. MySQL: Миграция базы
1. Совсем без downtime не вышло
2. ALTER TABLE ... ADD COLUMN `region` NOT NULL ...
3. Модифицировать код (не сложно)
4. Остановить трафик (nginx: return 204)
5. Включить binlog и GTID
6. mysqldump ... (с серверов 2 и 3 – часть таблиц)
56. MySQL: Миграция базы
1. Совсем без downtime не вышло
2. ALTER TABLE ... ADD COLUMN `region` NOT NULL ...
3. Модифицировать код (не сложно)
4. Остановить трафик (nginx: return 204)
5. Включить binlog и GTID
6. mysqldump ... (с серверов 2 и 3 – часть таблиц)
7. Запустить трафик
57. MySQL: Миграция базы
1. Совсем без downtime не вышло
2. ALTER TABLE ... ADD COLUMN `region` NOT NULL ...
3. Модифицировать код (не сложно)
4. Остановить трафик (nginx: return 204)
5. Включить binlog и GTID
6. mysqldump ... (с серверов 2 и 3 – часть таблиц)
7. Запустить трафик
8. Все запросы попадут в binlog и slave node сможет их проиграть
58. MySQL: Миграция базы
1. Совсем без downtime не вышло
2. ALTER TABLE ... ADD COLUMN `region` NOT NULL ...
3. Модифицировать код (не сложно)
4. Остановить трафик (nginx: return 204)
5. Включить binlog и GTID
6. mysqldump ... (с серверов 2 и 3 – часть таблиц)
7. Запустить трафик
8. Все запросы попадут в binlog и slave node сможет их проиграть
9. Главное что бы binlog не успел отротейтится
59. MySQL: GTID
gtid-mode = on
a61678ba488942799e5845ba840af334:1
Server UUID Transaction Number
62. Binlog Format
1. binlog_format = STATEMENT
UPDATE mytable SET x=123 WHERE id=1
UPDATE mytable SET time=NOW() WHERE id=1
UPDATE mytable SET field=uuid() WHERE id=1
63. Binlog Format
1. binlog_format = STATEMENT
UPDATE mytable SET x=123 WHERE id=1
UPDATE mytable SET time=NOW() WHERE id=1
UPDATE mytable SET field=uuid() WHERE id=1
2. binlog_format = ROW
Binary diff: {x:123}
64. Binlog Format
1. binlog_format = STATEMENT
UPDATE mytable SET x=123 WHERE id=1
UPDATE mytable SET time=NOW() WHERE id=1
UPDATE mytable SET field=uuid() WHERE id=1
2. binlog_format = ROW
Binary diff: {x:123}
binlog_row_image = minimal
minial – результат изменения
full – полная копия строки до и после
noblob - full но без BLOB J
65. MySQL – времена изменились
binlog_group_commit_sync_delay
log_slave_updates
slave-parallel-workers
slave-parallel-type = LOGICAL_CLOCK / DATABASE
binlog_do_db / binlog_do_table
replicate-do-db / replicate-do-table
68. MySQL: New Master
1. Запустить mysql: systemctl start mysql
2. Залить дамп mysql < dump_file.sql
69. MySQL: New Master
1. Запустить mysql: systemctl start mysql
2. Залить дамп mysql < dump_file.sql
3. CHANGE MASTER
MASTER_HOST='something',
MASTER_USER= ...
FOR CHANNEL="name_of_channel";
70. MySQL: New Master
1. Запустить mysql: systemctl start mysql
2. Залить дамп mysql < dump_file.sql
3. CHANGE MASTER
MASTER_HOST='something',
MASTER_USER= ...
FOR CHANNEL="name_of_channel";
4. FOR CHANNEL="master_in_region_2";
71. MySQL: New Master
1. Запустить mysql: systemctl start mysql
2. Залить дамп mysql < dump_file.sql
3. CHANGE MASTER
MASTER_HOST='something',
MASTER_USER= ...
FOR CHANNEL="name_of_channel";
4. FOR CHANNEL="master_in_region_2";
5. Примерно 30-40 минут на то что бы скачать данные измененные на "старых" серверах.
89. Спасибо мониторингу
• Zabbix
• И он даже был настроен
• И новые сервера добавлены (автоматически)
• Мониторились логи на предмет ошибок приложения
90. Спасибо мониторингу
• Zabbix
• И он даже был настроен
• И новые сервера добавлены (автоматически)
• Мониторились логи на предмет ошибок приложения
• O проблеме узнали из мониторинга, а не от клиента
92. PHP Fatal error
PHP Fatal error:
Uncaught exception
'PredisConnectionConnectionException'
with message
'Connection timed out [tcp://redis-host:6379]'
93. PHP Fatal error
• Никаких ошибок кроме этой
PHP Fatal error:
Uncaught exception
'PredisConnectionConnectionException'
with message
'Connection timed out [tcp://redis-host:6379]'
94. PHP Fatal error
• Никаких ошибок кроме этой
• Логи со стороны Redis девственно чисты
PHP Fatal error:
Uncaught exception
'PredisConnectionConnectionException'
with message
'Connection timed out [tcp://redis-host:6379]'
95. PHP Fatal error
• Никаких ошибок кроме этой
• Логи со стороны Redis девственно чисты
• В сети проблем не нашли
PHP Fatal error:
Uncaught exception
'PredisConnectionConnectionException'
with message
'Connection timed out [tcp://redis-host:6379]'
96. PHP Fatal error
• Никаких ошибок кроме этой
• Логи со стороны Redis девственно чисты
• В сети проблем не нашли
• Корреляция с нагрузкой? Сложно сказать.
PHP Fatal error:
Uncaught exception
'PredisConnectionConnectionException'
with message
'Connection timed out [tcp://redis-host:6379]'
98. Что делать? Ну как обычно
1. Покрутить крутилки в ядре, проверить лимиты
net.core.somaxconn
net.ipv4.tcp_tw_reuse
ulimit
99. Что делать? Ну как обычно
1. Покрутить крутилки в ядре, проверить лимиты
net.core.somaxconn
net.ipv4.tcp_tw_reuse
ulimit
2. Обновить Redis
100. Что делать? Ну как обычно
1. Покрутить крутилки в ядре, проверить лимиты
net.core.somaxconn
net.ipv4.tcp_tw_reuse
ulimit
2. Обновить Redis
3. Отключить flush на диск в Redis
101. Что делать? Ну как обычно
1. Покрутить крутилки в ядре, проверить лимиты
net.core.somaxconn
net.ipv4.tcp_tw_reuse
ulimit
2. Обновить Redis
3. Отключить flush на диск в Redis
4. Ничего не помогло
102. Что делать? Ну как обычно
1. Покрутить крутилки в ядре, проверить лимиты
net.core.somaxconn
net.ipv4.tcp_tw_reuse
ulimit
2. Обновить Redis
3. Отключить flush на диск в Redis
4. Ничего не помогло
5. На тестовом окружении не воспроизводится (я не смог воспроизвести)
103. Что делать? Ну как обычно
1. Покрутить крутилки в ядре, проверить лимиты
net.core.somaxconn
net.ipv4.tcp_tw_reuse
ulimit
2. Обновить Redis
3. Отключить flush на диск в Redis
4. Ничего не помогло
5. На тестовом окружении не воспроизводится (я не смог воспроизвести)
6. Ошибки продолжают сыпаться в лог
104. Что делать? Ну как обычно
1. Покрутить крутилки в ядре, проверить лимиты
net.core.somaxconn
net.ipv4.tcp_tw_reuse
ulimit
2. Обновить Redis
3. Отключить flush на диск в Redis
4. Ничего не помогло
5. На тестовом окружении не воспроизводится (я не смог воспроизвести)
6. Ошибки продолжают сыпаться в лог
7. Мой любимый вид проблем (но нет)
106. По колесам постучал, капот открыл-закрыл ...
• Каждый запрос открывает сессию к Redis
107. По колесам постучал, капот открыл-закрыл ...
• Каждый запрос открывает сессию к Redis
• 100500 новых сессий постоянно появляются и завершаются
108. По колесам постучал, капот открыл-закрыл ...
• Каждый запрос открывает сессию к Redis
• 100500 новых сессий постоянно появляются и завершаются
• Redis однопоточный
109. По колесам постучал, капот открыл-закрыл ...
• Каждый запрос открывает сессию к Redis
• 100500 новых сессий постоянно появляются и завершаются
• Redis однопоточный
• Ставим прокси à twemproxy
110. По колесам постучал, капот открыл-закрыл ...
• Каждый запрос открывает сессию к Redis
• 100500 новых сессий постоянно появляются и завершаются
• Redis однопоточный
• Ставим прокси à twemproxy
• [tcp://redis-host:6387] à [unix://var/run/twemproxy.sock]
111. По колесам постучал, капот открыл-закрыл ...
• Каждый запрос открывает сессию к Redis
• 100500 новых сессий постоянно появляются и завершаются
• Redis однопоточный
• Ставим прокси à twemproxy
• [tcp://redis-host:6387] à [unix://var/run/twemproxy.sock]
• twemproxy.yaml
listen: /var/run/twemproxy/redis.sock
servers:
- redis-host:6379:1
115. PHP FPM: Продолжение приключений
php-fpm.sock failed (11: Resource temporarily unavailable)
while connecting to upstream nginx error
116. PHP FPM: Продолжение приключений
php-fpm.sock failed (11: Resource temporarily unavailable)
while connecting to upstream nginx error
• pm = ondemand
Плохо, очень плохо
117. PHP FPM: Продолжение приключений
php-fpm.sock failed (11: Resource temporarily unavailable)
while connecting to upstream nginx error
• pm = ondemand
Плохо, очень плохо
• pm = dynamic
Ничуть не лучше
118. PHP FPM: Продолжение приключений
php-fpm.sock failed (11: Resource temporarily unavailable)
while connecting to upstream nginx error
• pm = ondemand
Плохо, очень плохо
• pm = dynamic
Ничуть не лучше
• pm = static
Путь силы
119. PHP FPM: Продолжение приключений
php-fpm.sock failed (11: Resource temporarily unavailable)
while connecting to upstream nginx error
• pm = ondemand
Плохо, очень плохо
• pm = dynamic
Ничуть не лучше
• pm = static
Путь силы
fork() – это "дорогая" операция.
Когда запросы приходят внезапно и их много
на fork() уже нет времени.
124. Kafka
• Используется для отложенных запросов к MySQL (сгладить нагрузку)
• Просто "труба"
• Да вы наверно и так все про Kafka знаете
125. Kafka
• Используется для отложенных запросов к MySQL (сгладить нагрузку)
• Просто "труба"
• Да вы наверно и так все про Kafka знаете
• У нас было несколько topic-ов (10 или около того)
126. Kafka
• Используется для отложенных запросов к MySQL (сгладить нагрузку)
• Просто "труба"
• Да вы наверно и так все про Kafka знаете
• У нас было несколько topic-ов (10 или около того)
• Мониторинг был (JMX)
127. Kafka
• Используется для отложенных запросов к MySQL (сгладить нагрузку)
• Просто "труба"
• Да вы наверно и так все про Kafka знаете
• У нас было несколько topic-ов (10 или около того)
• Мониторинг был (JMX)
Случайно заметили что данные в базе
отстают на сутки.
Пришлось разбираться почему.
128. Отстают данные это как?
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2017-01-10 11:48:25 |
+---------------------+
1 row in set (0.00 sec)
mysql> SHOW FULL PROCESSLISTG
************************ 5. row ************************
Id: 1907564
<skipped>
Info: INSERT INTO ... WHERE TIMESTAMPT='2017-01-09 10:33:15'
133. Kafka
• Первым делом – завели lag по топикам на мониторинг
• Сколько consumer-ов?
134. Kafka
• Первым делом – завели lag по топикам на мониторинг
• Сколько consumer-ов?
• Оказалось что один на topic
135. Kafka
• Первым делом – завели lag по топикам на мониторинг
• Сколько consumer-ов?
• Оказалось что один на topic
• Непорядок – запустили 20. И "внезапно" увидели что topic-и все с одной partition
136. Kafka
• Первым делом – завели lag по топикам на мониторинг
• Сколько consumer-ов?
• Оказалось что один на topic
• Непорядок – запустили 20. И "внезапно" увидели что topic-и все с одной partition
• Тут коллеги из зала должны смеяться. И спросить на что рассчитывали.
137. Kafka
• Первым делом – завели lag по топикам на мониторинг
• Сколько consumer-ов?
• Оказалось что один на topic
• Непорядок – запустили 20. И "внезапно" увидели что topic-и все с одной partition
• Тут коллеги из зала должны смеяться. И спросить на что рассчитывали.
• kafka-topics.sh
--alter
--zookeeper zookeeper:2181
--partitions <много>
--topic test
138. Kafka (слайд с примерами для тех кто будет читать а не слушать)
$ git clone https://github.com/wurstmeister/kafka-docker.git
$ docker-compose -f docker-compose-single-broker.yml up
Внутри контейнера
$ kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --group 1
$ kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --group 1
$ kafka-topics.sh --alter --zookeeper zookeeper:2181 --partitions 4 --topic test
$ kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group 1
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
test 0 14 14 0 consumer-1-53 ... /127.0.0.1 consumer-1
test 1 7 7 0 consumer-1-6d ... /127.0.0.1 consumer-1
Читать тут: https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html
142. Kafka
• Вроде бы все нормально но lag продолжает увеличиваться
• Пришлось смотреть в код
143. Kafka
• Вроде бы все нормально но lag продолжает увеличиваться
• Пришлось смотреть в код
• Был расстроен увидев там set_time_limit(60)
144. Kafka
• Вроде бы все нормально но lag продолжает увеличиваться
• Пришлось смотреть в код.
• Был расстроен увидев там set_time_limit(60)
• Вместо работы – вечный ребаланс.
Иногда повторное вычитывание если скрипт
убивался до того как делал commit
145. Kafka
• Вроде бы все нормально но lag продолжает увеличиваться
• Пришлось смотреть в код.
• Был расстроен увидев там set_time_limit(60)
• Вместо работы – вечный ребаланс.
• Убрал set_time_limit(60)
146. Kafka
• Вроде бы все нормально но lag продолжает увеличиваться
• Пришлось смотреть в код.
• Был расстроен увидев там set_time_limit(60)
• Вместо работы – вечный ребаланс.
• Убрал set_time_limit(60)
Через полтора часа пришел OOM Killer и все мне рассказал.
"Собака была бешеной, пришлось пристрелить"
147. Kafka
• Вроде бы все нормально но lag продолжает увеличиваться
• Пришлось смотреть в код.
• Был расстроен увидев там set_time_limit(60)
• Вместо работы – вечный ребаланс.
• Убрал set_time_limit(60)
• Утечку искал не я но в конце концов встроили ограничитель на число обработанных
сообщений
151. Kafka
• Тут должно было стать все хорошо
• Но не стало – lag продолжает увеличиваться (хотя и медленнее чем раньше)
152. Kafka
• Тут должно было стать все хорошо
• Но не стало – lag продолжает увеличиваться (хотя и медленнее чем раньше)
• Но все таки не рассасываться
153. Kafka
• Тут должно было стать все хорошо
• Но не стало – lag продолжает увеличиваться (хотя и медленнее чем раньше)
• Но все таки не рассасываться
• Кто виноват и что делать?
154. Kafka
• Тут должно было стать все хорошо
• Но не стало – lag продолжает увеличиваться (хотя и медленнее чем раньше)
• Но все таки не рассасываться
• Кто виноват и что делать?
• Объявили виноватой Kafka (мол не дает быстро вычитать данные)
155. Kafka
• Тут должно было стать все хорошо
• Но не стало – lag продолжает увеличиваться (хотя и медленнее чем раньше)
• Но все таки не рассасываться
• Кто виноват и что делать?
• Объявили виноватой Kafka (мол не дает быстро вычитать данные)
• Пришлось написать тестовый consumer на Java - вычитывает мгновенно
156.
157. Kafka
• Тут должно было стать все хорошо
• Но не стало – lag продолжает увеличиваться (хотя и медленнее чем раньше)
• Но все таки не рассасываться
• Кто виноват и что делать?
• Объявили виноватой Kafka (мол не дает быстро вычитать данные)
• Пришлось написать тестовый consumer на Java - вычитывает мгновенно
• Начали профайлить код consumer на PHP и смотреть куда уходит время
158. Kafka
• Тут должно было стать все хорошо
• Но не стало – lag продолжает увеличиваться (хотя и медленнее чем раньше)
• Но все таки не рассасываться
• Кто виноват и что делать?
• Объявили виноватой Kafka (мол не дает быстро вычитать данные)
• Пришлось написать тестовый consumer на Java - вычитывает мгновенно
• Начали профайлить код consumer на PHP и смотреть куда уходит время
• Да ТЕПЕРЬ я понимаю что с этого стоило б начать
161. Kafka
• Тут же выяснили что уперлись в MySQL
• Тут же выяснили то Disk Utilization у нас ВНЕЗАПНО не мониторилась
162. Kafka
• Тут же выяснили что уперлись в MySQL
• Тут же выяснили то Disk Utilization у нас ВНЕЗАПНО не мониторилась
• Опечатка: никто не застрахован
163. Kafka
• Тут же выяснили что уперлись в MySQL
• Тут же выяснили то Disk Utilization у нас ВНЕЗАПНО не мониторилась
• Опечатка: никто не застрахован
• После того как расширили диск IOPSов стало хватать lag начал уменьшаться
164. Kafka
• Тут же выяснили что уперлись в MySQL
• Тут же выяснили то Disk Utilization у нас ВНЕЗАПНО не мониторилась
• Опечатка: никто не застрахован
• После того как расширили диск IOPSов стало хватать lag начал уменьшаться
• А потом опять расти!
165. Kafka
• Тут же выяснили что уперлись в MySQL
• Тут же выяснили то Disk Utilization у нас ВНЕЗАПНО не мониторилась
• Опечатка: никто не застрахован
• После того как расширили диск IOPSов стало хватать lag начал уменьшаться
• А потом опять расти!
• CPU Credits на Kafka закончились – t2.<some instance size>
167. Kafka
• Тут же выяснили что уперлись в MySQL
• Тут же выяснили то Disk Utilization у нас ВНЕЗАПНО не мониторилась
• Опечатка: никто не застрахован
• После того как расширили диск IOPSов стало хватать lag начал уменьшаться
• А потом опять расти!
• CPU Credits на Kafka закончились – t2.<some instance size>
• Пришлось увеличить instance size
168. Все хорошо
• Все хорошо
• Все очень хорошо – нагрузку держим
• Моя работа закончена
171. Выводы
1. Планируйте нагрузку.
Нагрузочное тестирование позволило б предсказать большую часть проблем. К
сожалению это не всегда просто, особенно когда есть зависимости на внешние сервисы.
Иногда это банально стоит денег.
172. Выводы
1. Планируйте нагрузку.
Нагрузочное тестирование позволило б предсказать большую часть проблем. К
сожалению это не всегда просто, особенно когда есть зависимости на внешние сервисы.
Иногда это банально стоит денег.
2. Мониторинг это важно.
Проверьте мониторинг.
Те ли метрики Вы собираете?
И все ли нужные метрики?
Не менее важно хранить исторические данные что б видеть куда движемся и
предсказать проблемы.
173. Выводы
1. Планируйте нагрузку.
Нагрузочное тестирование позволило б предсказать большую часть проблем. К
сожалению это не всегда просто, особенно когда есть зависимости на внешние сервисы.
Иногда это банально стоит денег.
2. Мониторинг это важно.
Проверьте мониторинг.
Те ли метрики Вы собираете?
И все ли нужные метрики?
Не менее важно хранить исторические данные что б видеть куда движемся и
предсказать проблемы.
3. Архитектура?
174. Выводы
1. Планируйте нагрузку.
Нагрузочное тестирование позволило б предсказать большую часть проблем. К
сожалению это не всегда просто, особенно когда есть зависимости на внешние сервисы.
Иногда это банально стоит денег.
2. Мониторинг это важно.
Проверьте мониторинг.
Те ли метрики Вы собираете?
И все ли нужные метрики?
Не менее важно хранить исторические данные что б видеть куда движемся и
предсказать проблемы.
3. Архитектура?
175. Выводы
DevOps это не только CI/CD, но и взаимодействие между командами.
Программист: Наш код работает.
Админ: Сервер настроен правильно.
Крайнего не найти.