Как анализировать с memcache ключ урона с графитом?
у меня есть приложения Rails, который использует кэширование, и я хочу знать кэша для разных мест в приложении. Низкая нажмите тариф, очевидно, требуют внимания. Но измерить!
для получения реальных данных я использую graphite + statsd combo и A пользовательские инструменты Dalli используя statsd-инструмент gem. Все ключи в приложении находятся в форме ['place', details...]
, Так что я получаю следующие показатели в графит:
- статистика.кэш.place1.хиты
- статистика.кэш.place1.не попадает
- статистика.кэш.place2.хиты
- статистика.кэш.place2.не попадает
- etc.
теперь я хочу показать все хит тарифы. Я смог придумать следующую формулу для одного места:
divideSeries(stats.cache.place1.hits, sumSeries(stats.cache.place1.*))
он работает довольно хорошо, но есть несколько десятков мест, и я бы не хотел дублировать его, не говоря уже о том, что новые места могут появиться.
это вопрос для Вас, экспертов по графиту: есть ли способ показать ставки хитов для всех мест? Я видел функции group* в документах, но они меня смущают.
В идеале я хочу разделить свои места на 4 категории:
- высокая скорость попадания, много запросов. кэширование делает хорошую работу.
- низкая скорость попадания, много запросов. требует внимания.
- высокая скорость попадания, несколько запросы. требуется ли кэширование вообще?
- низкая скорость попадания, несколько запросов. удалить кэширование.
Я был бы очень благодарен за любые идеи, как использовать графит для такого анализа (можно ли запросить данные в формате JSON и сделать свою собственную математику, но я подозреваю, что там должен быть более простой способ).
1 ответов
вы можете использовать глобусы на нескольких уровнях, поэтому для глобального представления о том, как выполняется все кэширование:
divideSeries(stats.cache.*.hits, sumSeries(stats.cache.*.*))
для 4 категорий, которые вы упомянули,на mostDeviant
функция может быть хорошей, это поможет найти самые высокие / самые низкие скорости кэширования.
mostDeviant(5, divideSeries(stats.cache.*.hits, sumSeries(stats.cache.*.*)))
группировать их в ведра на основе запросов, а затем показывать отдельный производный коэффициент сложнее. Функции обратного вызова с использованием repeated groupByNode
и highestAverage
может работа
highestAverage(groupByNode(groupByNode(stats.cache.*.*, 3, "sumSeries"), 2, "divideSeries"), 10)
в качестве примечания, с большинством схем выселения кэша LRU (наименее-недавно используемых), в удаление кэширование, так как оно не будет конкурировать за пространство кэша.