mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-01-26 23:39:11 -05:00
Fix sampling of Thing._byID cache hit/miss rate.
This commit is contained in:
@@ -357,7 +357,9 @@ class DataThing(object):
|
||||
raise NotFound('huge thing_id in %r' % ids)
|
||||
|
||||
def count_found(ret, still_need):
|
||||
cache.stats.cache_report(hits=len(ret), misses=len(still_need))
|
||||
cache.stats.cache_report(
|
||||
hits=len(ret), misses=len(still_need),
|
||||
cache_name='sgm.%s' % cls.__name__)
|
||||
|
||||
if not cache.stats:
|
||||
count_found = None
|
||||
|
||||
@@ -97,6 +97,14 @@ class Stats:
|
||||
if counter and random.random() < sample_rate:
|
||||
counter.increment(name, delta=delta)
|
||||
|
||||
def cache_count_multi(self, data, cache_name=None, sample_rate=None):
|
||||
if sample_rate is None:
|
||||
sample_rate = self.CACHE_SAMPLE_RATE
|
||||
counter = self.get_counter('cache')
|
||||
if counter and random.random() < sample_rate:
|
||||
for name, delta in data.iteritems():
|
||||
counter.increment(name, delta=delta)
|
||||
|
||||
def amqp_processor(self, queue_name):
|
||||
"""Decorator for recording stats for amqp queue consumers/handlers."""
|
||||
def decorator(processor):
|
||||
@@ -165,14 +173,20 @@ class CacheStats:
|
||||
self.parent.cache_count(self.miss_stat_name, delta=delta)
|
||||
self.parent.cache_count(self.total_stat_name, delta=delta)
|
||||
|
||||
def cache_report(self, hits=0, misses=0, sample_rate=None):
|
||||
def cache_report(self, hits=0, misses=0, cache_name=None, sample_rate=None):
|
||||
if hits or misses:
|
||||
self.parent.cache_count(self.hit_stat_name, delta=hits,
|
||||
sample_rate=sample_rate)
|
||||
self.parent.cache_count(self.miss_stat_name, delta=misses,
|
||||
sample_rate=sample_rate)
|
||||
self.parent.cache_count(self.total_stat_name, delta=hits + misses,
|
||||
sample_rate=sample_rate)
|
||||
if not cache_name:
|
||||
cache_name = self.cache_name
|
||||
hit_stat_name = '%s.hit' % cache_name
|
||||
miss_stat_name = '%s.miss' % cache_name
|
||||
total_stat_name = '%s.total' % cache_name
|
||||
data = {
|
||||
hit_stat_name: hits,
|
||||
miss_stat_name: misses,
|
||||
total_stat_name: hits + misses,
|
||||
}
|
||||
self.parent.cache_count_multi(data, cache_name=cache_name,
|
||||
sample_rate=sample_rate)
|
||||
|
||||
class StatsCollectingConnectionPool(pool.ConnectionPool):
|
||||
def __init__(self, keyspace, stats=None, *args, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user