Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
В своём проекте мы решали следующие задачи:
+ Скорость разработки задачи;
+ Стоимость поддержки задачи;
+ Возможность распараллеливать вычисления и задачи;
+ Возможность максимально просто масштабировать приложение;
+ CI/CD с минимальными усилиями.
Я расскажу о том, как мы решали эти задачи, на какие грабли мы наступали, что из этого всего получилось, и что делать дальше.
Что получили в итоге:
+ Мощь JVM под капотом Scala;
+ 15 минут от нажатия на кнопку "Merge request" до продакшена в 3 датацентра и 6 серверов с прохождением тестов (юнит + функциональные + интеграционные + нагрузочные);
+ 6 нод с приложениями вместо 18 (по 2 в каждом датацентре для отказоустойчивости) с запасом прочности в 60%;
+ Независимые пофичные релизы без даунтайма всех компонентов приложения;
+ Масштабирование только того функционала и в том количестве, которое необходимо данному сервису.
Архитектура HAWQ / Алексей Грищенко (Pivotal)Ontico
HAWQ — один из лучших на рынке движков SQL-on-Hadoop, который не раз доказывал свою лидирующую позицию в открытых тестированиях. Что еще более интересно, в конце сентября этого года Pivotal открыл его исходный код под лицензией Apache, а также разместил сам проект в инкубаторе Apache (http://hawq.incubator.apache.org), что делает этот инструмент доступным большому кругу пользователей и намного более привлекательным для компаний — лидеров интернет-индустрии.
Работая в Pivotal, я участвовал в развитии и внедрении этого продукта с первого дня его существования.
В этой презентации я раскрою следующие темы:
+ Что такое HAWQ и зачем он был создан.
+ Кластерная архитектура HAWQ.
+ Принципы работы HAWQ.
+ Внутреннее устройство процессов HAWQ.
+ Интеграция с внешними системами.
+ Альтернативные решения.
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 в качестве хранилища документов.
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
Tempesta FW — это Open Source гибрид Web-акселератора и файервола, специально разработанный для высокопроизводительной доставки контента вне зависимости от DDoS или наплыва посетителей.
В докладе будет рассказано про задачи, которые ставились при разработке проекта и пути их решения. Рассмотрим проблемы современных операционных систем в приложении к Web-стеку (система фильтрации, Web-сервер, application слой, БД), и как они решаются в Tempesta — некоторые уже решены, некоторые еще в процессе работы.
И самое главное — у нас появился рабочий прототип, и я расскажу про типовые примеры инсталляции, фичи и конфигурацию, а также покажу бенчмарки.
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Ontico
РИТ++ 2017, HighLoad Junior
Зал Сингапур, 5 июня, 12:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2688.html
Современные приложения часто используют большое количество памяти, ещё чаще разработчики не задумываются, как именно приложение работает с памятью, и откуда она берётся. Просим ядро дать кусок памяти и начинаем с ним что-то делать... Но что за память нам выделяет ядро операционной системы? Память на самом деле виртуальная и делится на единицы, называемые страницами. Страницы бывают маленькими, бывают большими и очень большими.
...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
РИТ++ 2017, HighLoad Junior
Зал Сингапур, 5 июня, 11:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2683.html
Наш доклад описывает способ использования больших объемов памяти, которые стали доступны в последние годы. К сожалению, эта память обычно остается незадействованной в управляемых средах исполнения в связи с принудительной сборкой мусора. Разработчики прибегают к внешним хранилищам данных ( i.e Memcached), что несет дополнительные расходы.
...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Ontico
На примере нашей системы хранения фотографий мы хотим рассказать о проблемах, с которыми столкнулись в течение прошедших семи лет, связанных с ее программными и аппаратными компонентами, и о путях их решений.
В данном докладе речь пойдет о том, как сохранить независимость от поставщика и построить масштабируемую систему хранения с длительным сроком эксплуатации и способностью к оперативному внесению изменений в конфигурацию. Как сделать изменения на аппаратном уровне прозрачными для разработчиков, а также о том, как упростить развертывание и обслуживание.
В общих чертах изложен опыт и проблемы, которые мы получили в ходе эксплуатации классических мультиконтроллерных СХД. Основная тема - построение собственных хранилищ на базе общедоступных компонентов (полки, адаптеры, экспандеры, интерпозеры, диски, ЦПУ и т.д.) с потенциальной возможностью замены любого из выше перечисленного на другую модель. Дублирование критически важных узлов в рамках одной СХД. Обзор используемых транспортов - SRP, FC, iSCSI и описание того, каким образом можно быстро адаптировать такое хранилище под один или несколько транспортов, с минимальными вложениями. Обзор ПО для реализации СХД (SCST/LIO или проприетарные решения в области Software Defined Storage ). Автоматизация развертывания (инсталляция/управление с помощью Puppet). Тестирование перед вводом в эксплуатацию. Multipath I/O и упрощение именования экспортируемых блочных устройств. Политика составления наборов firmware для стабильной работы. Мониторинг. Расследование сбоев (Order of failure и т.п.).
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
Оперативная память становится всё более дешёвой и производительной, что позволяет использовать её для хранения рабочего набора данных всё большего числа приложений. Хранение всех данных в оперативной памяти позволяет сделать их высоко доступными, а алгоритмы для работы с данными либо существенно упростить, либо ускорить, а иногда — и то, и другое.
Тезисы - http://www.highload.ru/2015/abstracts/1964.html
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...Ontico
Facebook использует MySQL в качестве основного хранилища данных. MySQL работает на десятках тысяч серверов в нескольких ЦОДах. В качестве дисков используются Flash-накопители. Они дают большую производительность, но дорогой ценой — MySQL хранит данные на диске в структуре B-tree, которая использует flash-диск неоптимальным образом. В масштабах Facebook'a цена вопроса измеряется миллионами долларов.
Для оптимального использования Flash-дисков в Facebook была разработана библиотека RocksDB. Она основана на LSM-деревьях и оптимизирована для работы в условиях высокой загрузки. Чтобы использовать ее из MySQL, [совместно с MariaDB] был разработан табличный движок — MyRocks.
Данный доклад посвящен RocksDB и MyRocks. Мы расскажем о принципах их работы и преимуществах, как их настраивать, и какие возможны подводные камни.
Авторы доклада — ведущие разработчики MyRocks от Facebook и MariaDB.
RocksDB и MyRocks доступны на GitHub для свободного использования, участие в разработке также приветствуется.
Чему мы научились разрабатывая микросервисы?Vadim Madison
Доклад с конференции Backend Conf 2016
Начав разработку нового продукта через микросервисы, мы неожиданно для себя обнаружили, что микросервисы — это не просто "вместо одного большого приложения теперь пишем много маленьких". При разработке большой системы она сама собой через какое-то время становится набором отдельных сервисов, которые должны взаимодействовать между собой, поэтому стабильная работа сервисов и их взаимодействие не стало чем-то новым. Неожиданностью стало то, что система стала значительно более динамической, она стала постоянно изменяться отдельными небольшими частями, сервисы стали часто перезапускаться, а количество запущенных нод сервисов стало расти по экспоненте.
Очень быстро стал актуальным вопрос конфигурирования — если раньше, выкатив новую версию монолита с единым конфигом, мы применяли правки на всю систему сразу, то с микросервисами все сложнее — пара сотен работающих нод и всем нужно применить изменения. Требования к деплою также поменялись — он стал частью процесса разработки, а тестирование стало частью деплоя. Количество необходимого ПО для функционирования системы также стало некоторым сюрпризом.
В докладе я расскажу о том, как в итоге это работает у нас, как мы решили такие вопросы как:
- конфигурирование сервисов;
- интеграция между собой;
- тестирование;
- версионирование;
- масштабирование.
Расскажу, какие тулзы мы в итоге используем, а от каких отказались.
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Ontico
Rspamd — это система фильтрации спама с открытым кодом, выполняющая оценку e-mail сообщений по множеству критериев, который возник как попытка адаптировать фильтрацию спама к современным реалиям и постоянно растущему потоку электронных писем, нуждающихся в обработке.
Тезисы - http://www.highload.ru/2015/abstracts/1892.html
Сетевые аномалии – рано или поздно с ними сталкиваются все, кто так или иначе связан с созданием и эксплуатацией сетевых сервисов.
Природа сетевых аномалий и их проявления могут значительно варьироваться: потери пакетов, увеличение задержек, разрывы TCP-соединений. Но вне зависимости от своей природы сетевые аномалии требуют корректной и зачастую крайне оперативной диагностики.
В рамках доклада будут рассмотрены стандартные утилиты, такие как ping, traceroute, mtr, hping, а также области их применения. Самым значительным ограничением при использовании данных утилит является невозможность определения обратного пути пакета, что может значительно усложнить диагностику.
Также в докладе будут рассмотрены активные методы диагностики сетевых аномалий (Looking glass, RIPE Atlas, NLNOG RING, PlanetLab) и разработанный командой Qrator механизм определения обратного маршрута от любой заданной сети с использованием математического моделирования.
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Ontico
Некоторое время назад, когда в очередной раз встал вопрос о производительности большого парка mysql sharding серверов, мы не захотели покупать новые сервера и производить resharding. Мы обнаружили, что компания facebook выпустила в opensource большое количество своих разработок, в том числе и модуль ядра flashcache.
Flashcache — модуль для кэширования блоков блочного устройства, предоставляющий 4 разных режима кэширования.
В данном докладе я расскажу, как мы тестировали, поэтапно проверяя под нагрузкой, 3 из 4 режимов кэширования, сравнивая и выбирая оптимальный. Итогом данной работы стало внедрение данного модуля в нашу архитектуру (фотосервера, сервера БД).
Drush and drupal. администрирование волчек михаилdrupalconf
This document discusses Drush, a command line shell and scripting interface for Drupal. It provides an overview of basic Drush commands like status, downloading modules, cache clearing. It also covers using Drush for tasks like updating Drupal sites, installing modules, managing users, and integrating Drush with tools like Git and cron jobs. The presentation emphasizes how Drush can save time for system administrators by automating repetitive tasks.
Object Oriented CSS (OOCSS) is a methodology for writing CSS that promotes reusability and reducing redundant code. It involves separating layout styles from visual styles, and container styles from content styles. This allows the same CSS classes to be reused in different contexts. OOCSS also advocates building pages with semantic HTML and reusable base styles. CSS preprocessors can help, but require care to avoid generating bloated code that goes against the principles of OOCSS.
Создание креативных концепций, брендинг и фирменный стиль, производство и согласование рекламных носителей, медиапланирование и медиабаинг (ТВ, радио, пресса, Интернет), веб-дизайн и программирование.
Весь спектр услуг в области видеопродакшна: производство рекламных и промо-роликов, корпоративных фильмов, презентационного видео, музыкальных клипов, анимации и 3D графики; организация прямых трансляций.
1. Sam Parker feels a sense of being followed and watched, and sits by a duck pond reminiscing about happier times before two people, particularly a man, ruined his life.
2. Sam plans to get revenge against the man who took away a girl he was interested in and destroyed his life, thinking of horrific ways to hurt and kill him.
3. Sam believes the man knows Sam is after him and will kill him slowly, and it is just a matter of time before Sam enacts his revenge for what was started against him.
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
HighLoad++ 2017
Зал Конгресс-Холл, 7.ноября, 11:00
Презентация и тезисы:
http://www.highload.ru/2017/abstracts/2981.html
Что нового появилось в nginx за последнее время, и для чего всё это нужно? В докладе - рассказ про основные новые функции в nginx 1.11.x (доступно в стабильной ветке 1.12.x) и 1.13.x. Для чего нужен параметр сборки --with-compat, что делает директива mirror, будет ли работать TLS 1.3, как обновлять кэш с помощью proxy_cache_background_update, что такое stale-while-revalidate, как логировать JSON и что делать, если после обновления конфигурации старые рабочие процессы долго не завершаются.
Читаем CHANGES вместе и разбираем на примерах.
Сейчас OpenStack на слуху, но детальных отзывов и описаний дизайна инфраструктуры все еще не много. Постараемся немного упростить задачу для тех, кто еще только планирует развертывание инфраструктуры виртуализации, и расскажем, как это делали мы в некоторых наших проектах:
погрузимся в нюансы реализации окружения OpenStack в боевой среде;
поговорим об отказоустойчивости;
рассмотрим варианты организации резервного копирования;
обратим внимание на конфигурацию «железок»: СХД и сети.
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Демоны в большом проекте – проблемы и их решения (Redis, RabbitMQ, Skytools, Node.JS, HBase)", Александр Чистяков (ведущий разработчик Cezurity)
Аннотация
Когда команда разработчиков собирается написать новый сервис, у нее, как правило, отсутствует свободное время, но есть необходимый энтузиазм. Из-за нехватки времени многие архитектурные решения приходится принимать, руководствуясь общими соображениями, так как провести всесторонние тесты имеющихся на рынке средств в краткие сроки невозможно. Мы, специалисты компании Cezurity, начали свой проект не вчера, и уже накопили некоторый опыт использования технологий, появившихся сравнительно недавно - таких как Skytools, Node.JS, RabbitMQ и Redis. О том, какие возникли проблемы при внедрении этих средств, и какие их ограничения пришлось преодолевать и учитывать - мой доклад. Кроме того, я расскажу о новом направлении в нашей деятельности - внедрении HBase для хранения большого объема данных.
Биография
Докладчик - узкий специалист широкого профиля, относит себя к виду, называемому в современной англоязычной литературе термином "DevOps". Любит принимать участие в создании сложных систем и постоянно это делает. Никогда не работал в Яндексе, компенсировав это работой в Mail.Ru и некоторых других местах.
опыт использования схемы Drupal+varnish+nginx руслан исайdrupalconf
Ruslan Isay, a project manager from i20.biz company, presented on their experience with Drupal, Nginx, and Varnish for a website with over 500,000 pages and 800,000 users. Their solution involved using Varnish for caching and Nginx for file storage and load balancing. They discussed using edge side includes (ESI) and custom modules to dynamically refresh cache for frequently updated content like user comments. Rules and cache expiration modules were used to purge cache when content changed.
3 reasons to contribute to drupal florian loretan (eng)drupalconf
There are 3 main reasons to contribute to Drupal: 1) To learn best practices from the community, 2) To exchange code, testing, and ideas with other developers, and 3) To build a professional network of contacts in the Drupal field. Contributing allows developers to improve their skills, collaborate with peers, and find new opportunities.
Drupal and mobile devices komelin konstanin (eng)drupalconf
The document discusses adapting Drupal for mobile devices. It covers creating mobile-optimized sites using device detection and responsive design. Native mobile applications can also be built using tools like PhoneGap or Titanium. The Drupal Services module allows creating RESTful APIs for mobile apps to access Drupal content. The document demonstrates these approaches and provides resources for further information.
This document discusses building multilingual Drupal websites. It covers questions to consider like what languages to support and who will do translations. It then outlines the steps to set up languages, translate the user interface, content, and other elements. These include installing languages, translating variables, nodes, menus and more using modules like Entity Translation. It also discusses extending functionality with tools like the Localization Update.
опыт использования схемы Drupal+varnish+nginx руслан исайdrupalconf
Ruslan Isay, a project manager from i20.biz company, gave a presentation about their experience with Drupal, Nginx, and Varnish. Their website has over 500,000 pages and 800,000 registered users. They use Varnish for caching and Nginx for file storage and load balancing. They implemented edge side includes (ESI) to cache dynamic content and purge caches when content changes. Custom modules integrate ESI and handle cache expiration.
The document discusses using Drupal for business applications. It outlines how Drupal can help businesses integrate existing systems, use e-commerce, better support customers, and get a higher ROI. The presentation covers Drupal business conferences, a business application framework in Drupal for registers, documents and reports, and concludes that Drupal enables rapid development, higher quality at lower costs, and new possibilities like ERP, HRM and CRM.
Drupal and the keys to successful communities martin mayerdrupalconf
This document discusses the keys to successful online communities using Drupal and Livemocha as case studies. It outlines that communities should (1) create a framework that allows members to benefit collectively, (2) structure itself to be self-organizing, and (3) let users contribute content through collective action. Successful communities also motivate continual participation, allow members to shape rules, monitor internally for misuse, and provide easy conflict resolution. Both cooperation and competition among members are important, as is giving participants autonomy.
3. Спонсоры
Информационные спонсоры
Сайт конференции
4. Постановка задачи
Задача (2009-й год)
- Drupal 6
- прогноз нагрузки 10M хитов в месяц
-два сервера под проект (DL360G6)
-производительность, масштабируемость, отказоустойчивость
Наследие
- 4 сервера (FreeBSD 7/amd64)
- web-проекты:
- http://www.runewsweek.ru
-http://www.ok-magazine.ru
-http://www.computerbild.ru
-http://www.axelspringer.ru
5. Текущая ситуация
Средние параметры нагрузки (3 месяца)
Трафик: 3-4 Тб/месяц, 1.5 Мб/c отдача
Front-end: 130 запросов в секунду, 1К активных подключений
MySQL: 1.6 Kqps
Последний пик посещаемости (15-е апреля)
Трафик: отдали 270Гб+, 9Мб/с – упираемся в канал
Front-end: 50M+ запросов (включая статику), до 1700 запросов в
секунду, до 10К активных подключений
Back-ends: 2.2M+и 1.5M+ запросов
MySQL: до 20Кqps, 2Kqpsв среднем.
6. Текущая ситуация
Физические параметры www.forbes.ru
Объем кода + медиафайлов: 16 Гб
Количество файлов (код + медиафайлы): ~ 110К
Размер базы: 3 Гб
Кол-во записей в базе: 20 М
7. Принципы построения
1. Хостинг под «стандартные» web-проекты
нет гигантских объемов медиафайлов и огромных баз
2. Общая площадка, максимальная утилизация
разместить старые проекты, Форбс, будущие проекты
3. Нужно изолировать проекты друг от друга
безопасность, разные
разработчики/подрядчики, совместимость ПО
4. Shared-nothing, не надеемся на железо
не должно быть единой точки отказа
5. Не менять платформу (FreeBSD) без весомых причин
6. KISS, не гнаться за девятками слишком сильно
минимум непроверенных технологий
8. Разделяй и властвуй
1. Front-ends (2 минимум)
• балансировка нагрузки между back-ends, failover для back-ends
• кэширование, отдача статики
• межсетевой экран
• расширяемость, отказоустойчивость
2. Back-ends (2 минимум)
• код (PHP/Drupal, но может быть что угодно)
• расширяемость, отказоустойчивость, режим активный-активный
• изоляция web-проектовдруг от друга
3. Сервера БД (2 минимум)
• расширяемость, отказоустойчивость
• резервное копирование
4. Сеть
• отказоустойчивость
9. Front-ends
1. Общий IP-адрес (или адреса)
• на DNS полагаться не можем
• CARP (Common Address Redundancy Protocol)во FreeBSD“из коробки”
• pf - удобно и функционально
• идентичные nginx на обоих front-ends
2. Кэширование/балансировка/отдача статики (nginx)
• ngx_http_proxy_module
• proxy_store – борьба с новыми и меняющимися файлами
• ngx_http_upstream (ip_hash, backup, down) – балансировка, failover
• ngx_http_limit_zone_module – ограничение числа подключений
• ngx_http_limit_req_module – ограничение числа запросов
• удобные логи (профиль производительности сайта)
3. Альтернативы: Varnish, HAProxy
• для Varnish нужен Pressflow/патч для Drupal 6/Drupal 7
• Varnish/HAProxy – только proxy/балансировка (пусть и хорошая)
• Varnish – производительность сравнима cBoost
• мало опыта
10. CARP ДЦ
213.145.46.183
carp1 carp2
10.10.10.1
LAN
#sysctlnet.inet.carp.preempt=1
12. Back-ends: изоляция проектов
1. Почему FreeBSD jails?
• лѐгкие
• «из коробки»
• ezjail – просто и удобно
2. Альтернативы: Xen, OpenVZ, etc.
• Xen – тяжѐлый
• OpenVZ, Linux-VServer – патченное ядро, лишний функционал
3. Что такое ezjail?
• никаких зависимостей, только shell
• быстрое создание
• резервное копирование, восстановление
• шаблоны
• ограничение ресурсов (cpuset)
14. Back-ends: общий DocRoot
1. Почему csync^2?
• shared-nothing, узлы полностью независимы
• прост и эффективен
• подходит для репликации между ДЦ
• триггеры (одно решение для данных и конфигураций)
• работаем с локальной ФС, которую мы «умеем готовить»
2. Альтернативы:
DRBD, GFS(2), OCFS(2), GlusterFS, etc…
• DRBD – только primary-secondary
• DRBD + GFS/OCFS2 (primary-primary) – сложно
• нет боевого опыта, сложность, пугают потенциальные
проблемы производительности, совместимость
16. Что такое csync^2?
• Асинхронная синхронизация :)
• Обнаружение и разрешение конфликтов
• Репликация удалений
• Сложные конфигурации: исключения, группы
хостов, slave-режим
• librsync
• локальная БД (sqlite)
• «проталкивает» изменения
• SSL + pre-shared-keys
• резервное копирование
• триггеры
17. Производительность csync^2
• 10 минут на полную синхронизацию 40K+ файлов
общим размером 500Мб
• 13 секунд на проверку, что все синхронно
• 22 секунды на синхронизацию новых 1400 файлов
объемом 13Мб
• 8 секунд на проверку, что все синхронно
18. Back-ends: web-сервер
• Apache – совместимость
• ПО, поставляемое в виде модулей Apache
• модули Drupal, «заточенные» на Apache (Boost)
• Apache + Boost с одной машины загружают гигабит
• Можем использовать любой web-сервер и набор ПО
19. MySQL
• Postgresql – богат, но много «но», поэтому MySQL
• Отказоустойчивость для MySQL
• родная репликация (master-slave)
• MySQL + DRBD
• MySQL Cluster
• master-master с родной репликацией (circular replication)
• MMM (Multi-Master Replication Manager for MySQL)
• Galera – синхронная репликация (на тот момент beta)
• Масштабируемость
• родная репликация (master-slave)
• часть запросов на slave (MySQL Proxy, Pressflow)
20. MySQL
db1 db2
db1-drupal db2-drupal db-drupal-rw (IP))
db-bitrix-rw (IP)) db1-bitrix db2-bitrix
- Подключения к БД
- Направление репликации
- MySQL in jail (master)
- MySQL in jail (slave)
21. Сеть
• LACP (Link Aggregation Control Protocol)
• просто, но не реализовано
• не нужны коммутаторы при схеме из 2-х серверов
22. Резюме по архитектуре
• 2 front-ends (активный-пассивный), 2 back-ends
(активный-активный), 2 MySQL (перекрестная
репликация master-slave)
• FreeBSD 7
• pf –межсетевой экран, подсчет трафика
• CARP – общий IP, failover
• Nginx – балансировка, кэширование
• Jails – легковесная виртуализация (все в jail-ах)
• csync^2 – синхронизация Document Root, конфигов
• MySQL – стандартная master-slave репликация
• LACP – отказоустойчивость сети (не реализовано)
23. Текущие задачи
• Резервное копирование (mysqldump, снапшоты)
• Мониторинг (Zabbix), внешний (http) и внутренний
• Разработка (git, redmine, jails, нет migraine)
• Оптимизация производительности
• MySQL slow log, mysqldumpslow/mk-query-digest
• смотрим на back-ends из nginx
• Xdebug
• Instrumentation.php от Percona (TODO)
• Обновление ПО/модернизация железа
24. Профиль производительности
• Логи nginx в .csv(в т.ч. $upstream_response_time)
импортируем в MySQL и получаем полезные
агрегированные данные
• самые медленные страницы (в среднем)
• самые медленные страницы (суммарно)
• отчет по кодам ответа back-ends
• сравнение производительности back-ends
• профиль производительности (универсально, имеет смысл
автоматизировать и пользоваться ежедневно)
• помогает понять, где оптимизировать
26. Instrumentation от Percona
• Инструментарий для экспорта полезных счетчиков в
переменные Apache
• Комментарии к запросам MySQL, после чего mk-query-
digest
• Переменные ->лог Apache -> SQL ->отчеты
• Xdebugтяжелый, нет возможности агрегировать
данные, не подходит для поиска редких проблем
• Можно ловить проблемы mysql, memcache, чего угодно
• Требуется интеграция в код (в хороший код
интегрировать просто)
27. Планы и проблемы
• Boost и csync^2– решить проблему или использовать
альтернативное решение
• Instrumentation от Perconaдля поиска редких проблем
• Pressflow, часть запросов на slave
• Второй ДЦ
• Автоматизировать failover для MySQL (MMM или
самостоятельно)
• Избавиться или свести к минимуму кэширование Drupal
в MySQL
• LACP