
Как CTO находит медленные запросы и исправляет их до эскалации в финансовый отдел
NeonEdge — это крипто-нативная платформа игр на основе Таллина, Эстония, построенная вокруг криптографически справедливых краш-игр с поддержкой нескольких цепей через ETH, Tron, Polygon и SOL. Платформа обслуживает примерно пятнадцать тысяч ежемесячно активных пользователей и обрабатывает около $5M в неделю в валовом доходе от игр. Это небольшой, технически амбициозный магазин — два инженера управляют всей инфраструктурой данных — и Прия Десаи, CTO и Head of Data, — это человек, которого вызывают product и finance, когда что-то движется медленнее, чем ожидается.
Используемые продукты: Аналитика производительности запросов, Мониторинг инфраструктуры, Оптимизация затрат
20 минут | полное время расследования
3 | проблемных запроса выявлено с холодного старта
12x | среднее ускорение после развертывания оптимизаций
Проблема
Жалобы поступили в течение 48 часов с двух разных направлений. Product team подал сообщение Slack о том, что отчеты активности игроков работают медленно. Finance был более прямолинеен: еженедельный отчет примирения GGR начал истекать во время загрузки. Нет кодов ошибок, нет очевидных сбоев — просто медленность.
Стандартный диагностический инструментарий Прии для такого типа проблемы был не быстрым. Отслеживание задержки запроса через многоцепочечный стек данных означало сопоставление логов из трех отдельных сервисов, проверку утилизации ресурсов кластера вручную. В хороший день это заняло два-три часа. В плохой день это могло растянуться на весь день.
Структурная проблема заключалась в том, что стек данных NeonEdge вырос органически. Ранние инженерные решения были разумны, но никогда не пересматривались по мере роста платформы.
"Мы двухчеловечная группа данных, управляющая инфраструктурой для пятнадцати тысяч пользователей и $5 млн в неделю GGR. Мне нужно узкое место на моем экране за 20 минут, иначе проблема сидит до следующего спринта."
— Прия Десаи, CTO, NeonEdge
Решение
Прия открыла Gaming Mind AI и описала симптомы простыми словами. Gaming Mind подключился к инфраструктуре телеметрии NeonEdge и начал с самого прямого диагностического вопроса: какие запросы потребляют наибольшее время выполнения по всему стеку прямо сейчас.
Прия: "Отчеты медленные везде. С чего начать?"
| Ранг | Имя запроса | Среднее время выполнения | время P99 | Запуски/день | Вызывающий | % от общего времени запроса |
|---|---|---|---|---|---|---|
| 1 | Отчет примирения GGR | 41.2 сек | 68.4 сек | 4 | Finance | 24% |
| 2 | Отчет активности игрока | 31.0 сек | 54.1 сек | 8 | Product | 22% |
| 3 | Отчет когорты игрока | 28.3 сек | 47.6 сек | 6 | Product / CRM | 12% |
| 4-10 | (другие) | < 6 сек avg | — | — | — | 42% |
⚠️ Gaming Mind flags: Топ-3 запроса держат 58% от общего времени выполнения запроса. Исправление топ-3 сократит общее время запроса на предполагаемые 58% без изменения чего-либо еще.
Gaming Mind создал доску лидеров задержки за последние семь дней выполнения запроса. Три наихудших нарушителя очень четко стояли с выше среднего от 28 до 41 секунды каждый.
Прия: "Расскажи о самом медленном."
Запрос: Отчет примирения GGR
| Этап | Операция | Сканировано строк | Выведено строк | Время этапа | Время нарастающей |
|---|---|---|---|---|---|
| 1 | Полное сканирование таблицы — transaction_ledger | 84,200,000 | 84,200,000 | 28.4 сек | 28.4 сек |
| 2 | Filter: записи этой недели | 84,200,000 | 312,400 | 6.1 сек | 34.5 сек |
| 3-5 | (объединение и агрегация) | — | — | — | 41.2 сек |
⚠️ Gaming Mind flags: Отчет GGR совершает полное сканирование таблицы 18 месяцев истории транзакций, чтобы ответить на вопрос, который нуждается только в текущей неделе. Коренная причина: отсутствует WHERE-предикат для фильтра даты до сканирования таблицы.
Худший запрос был отчетом примирения GGR. Gaming Mind разбил план выполнения поэтапно: полное сканирование касалось каждой строки в реестре транзакций, включая исторические записи, идущие назад к запуску платформы, каждый раз. Запрос не имел примененного предиката даты до сканирования, что означало, что он обрабатывал около 18 месяцев истории транзакций, чтобы ответить на вопрос, который нуждался только в текущей неделе.
Прия: "И второй?"
Запрос: Отчет активности игрока
| Этап | Операция | Входные строки | Выходные строки | Время этапа |
|---|---|---|---|---|
| 1 | Сканирование: player_sessions | 2,100,000 | 2,100,000 | 4.2 сек |
| 2 | Join: game_events (широкий, до фильтра) | 2,100,000 | 18,700,000 | 12.8 сек |
| 3-4 | Join + Filter | 18,700,000 | 480,000 | 11.7 сек |
| 5 | Aggregate + format | 480,000 | 920 | 2.3 сек |
⚠️ Gaming Mind flags: Соединение расширяется перед фильтром — производит промежуточный результат почти в 3 раза больше необходимого. Обратное двух этапов в последовательности соединения уменьшит потребление памяти примерно на две трети.
Прия: "А третий?"
Запрос: Отчет когорты игрока
| Столбец | Есть индивидуальный индекс | Часть составного индекса | Время пересечения |
|---|---|---|---|
| chain_identifier | Да | Нет | — |
| registration_date | Да | Нет | — |
| game_category | Да | Нет | — |
| Все три вместе | Нет | Нет | ~19 сек за выполнение |
⚠️ Gaming Mind flags: Три столбца, которые появляются в каждой версии этого запроса, имеют индивидуальные индексы, но никогда не как составной индекс. Добавление одного составного индекса исключит ручное пересечение работы и ускорит этот отчет плюс 13 других запросов по платформе одновременно.
Результаты
Расследование завершено за 20 минут с холодного старта
Прия не имела предварительно созданных панелей. Gaming Mind потянула телеметрию, ранжировала нарушителей и создала упорядоченный по приоритетам список исправлений в одном разговоре.
Определены три коренные причины трех разных типов проблем
Каждый медленный запрос имел структурно отличающуюся причину — неотфильтрованное историческое сканирование, неоптимальный порядок соединения и отсутствующий составной индекс.
12x среднее ускорение после развертывания исправлений
После всех трех изменений среднее время создания отчета упало с 45 секунд до трех секунд и 42 сек — ускорение в двенадцать раз.
"Я рассчитывал провести день в лог-файлах. Gaming Mind получил три запроса ранжированы, профилированы и приоритизированы за 20 минут."
— Прия Десаи, CTO, NeonEdge
Read in another language
Want to see how Gaming Mind AI can help your operation?
Get a Demo