Диагностика медленных запросов БД из Rails приложения — Ruby Meetup — Evrone х Купер.тех
Разберем базовый тулинг, который предлагает Rails для выявления медленных запросов, а также его расширение в виде yabeda-active_record гема для сбора метрик и расширенный вариант, включающий в себя метрики нагрузки на БД в разрезе конкретных эндпойнтов. Коснемся вопроса вычисления эффекта от оптимизаций и прогнозирование такого эффекта через OpenTracing. Подписывайтесь на наш канал здесь и в телеграмм https://t.me/meetups_evrone, чтобы быть в курсе будущих митапов и не пропускать полезные доклады! Спикер: Дмитрий Салахутдинов, Купер.тех Таймкоды 00:00 Введение 02:37 Rails instrumentation API 03:34 Событие process_action 04:13 Гистограмма rails_db_runtime_seconds 04:47 Нагрузка на БД 08:04 Методики оценки и принятия решений 08:53 Роадмап оптимизации 09:43 Вариант оптимизации: ускорение запросов 11:20 Событие sql.active_record 11:58 Вариант оптимизации: перевод нагрузки на реплики 12:33 Marginalia gem 13:00 query_log_tags в Rails 7 13:38 Получение компонента из контекста 14:13 Роадмап оптимизации v2 14:47 Дополнительно query_type 15:27 Нагрузка по чтению с мастер БД 16:37 Издержки калькуляции 18:30 Вариант оптимизации: декомпозиция монолита с вынесением нагрузки на сервис 18:55 Определение контекста для выноса 19:44 Прогнозирование эффекта 20:30 Считаем метрики нагрузки в разрезе таблицы 21:19 Почему метрики неудобны? 22:29 OpenTracing & Jaeger 23:08 Расчет на основе данных из ОТ 23:59 Jaeger Trace Retrieval API 24:10 План работ по этапам 25:32 Выводы 26:30 Q&A сессия