summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Reifschneider <jafo00@gmail.com>2016-05-27 10:24:54 -0600
committerSean Reifschneider <jafo00@gmail.com>2016-05-27 10:24:54 -0600
commit120a16d86e4795a95efc6c9b4a50f10c992d3972 (patch)
tree23d47fee04fa53d89914bd6a6f87f9669982ee73
parent7feed83fcbbda8817e19b74c13dc68e5d1f64461 (diff)
parentdc35cd8fdbcce2c3d91e385308840fb7182315bf (diff)
downloadpython-memcached-120a16d86e4795a95efc6c9b4a50f10c992d3972.tar.gz
Merge pull request #93 from grg350/master
Adding support for "stats slabs" statistics
-rw-r--r--memcache.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/memcache.py b/memcache.py
index 2fd452b..db2c0b1 100644
--- a/memcache.py
+++ b/memcache.py
@@ -345,6 +345,37 @@ class Client(threading.local):
return(data)
+ def get_slab_stats(self):
+ data = []
+ for s in self.servers:
+ if not s.connect():
+ continue
+ if s.family == socket.AF_INET:
+ name = '%s:%s (%s)' % (s.ip, s.port, s.weight)
+ elif s.family == socket.AF_INET6:
+ name = '[%s]:%s (%s)' % (s.ip, s.port, s.weight)
+ else:
+ name = 'unix:%s (%s)' % (s.address, s.weight)
+ serverData = {}
+ data.append((name, serverData))
+ s.send_cmd('stats slabs')
+ readline = s.readline
+ while 1:
+ line = readline()
+ if not line or line.strip() == 'END':
+ break
+ item = line.split(' ', 2)
+ if line.startswith('STAT active_slabs') or line.startswith('STAT total_malloced'):
+ serverData[item[1]]=item[2]
+ else:
+ # 0 = STAT, 1 = ITEM, 2 = Value
+ slab = item[1].split(':', 2)
+ # 0 = Slab #, 1 = Name
+ if slab[0] not in serverData:
+ serverData[slab[0]] = {}
+ serverData[slab[0]][slab[1]] = item[2]
+ return data
+
def get_slabs(self):
data = []
for s in self.servers: