MOM: Memcached Operations Monitoring

Dustin Sallings dustin at
Thu Oct 11 22:17:46 UTC 2007

On Oct 11, 2007, at 14:16 , Randy Wigginton wrote:

> I have modified memcached as well as the java client library; with  
> these modifications, and very few lines of code in the application,  
> I can tell precisely how many URLs and SQLs are executing on a  
> particular machine in any given minute or in any given hour.  I can  
> tell you the average execution time, the maximum execution time, as  
> well as the number of failures.  I can tell you which URLs were  
> expensive, which URLs invoked SQL statements, which urls failed  
> most often.  Coupled with a small mysql database, I can give you  
> more operational statistics on our site than many larger sites have  
> available.

	I do a similar thing in application with a small amount of java  
code.  If I had to guess, it sounds like you want to do the same kind  
of thing I'm doing, but in memcached instead of in a server instance.

	Mine has a couple of forms:

	public Something doSomething(...) {
		// expensive stuff

	With the above, I automatically get stats that look like this (time  
units in milliseconds):

blah.doSomething = compstat: count=26345 sum=461399.000000  
min=7.000000 avg=17.513722 davg=17.517460 max=1731.000000  

	You can also directly use the stats and do your own timings within  
code (or use a simple counter variant).

	The counter variant is analogous to incr.  Adding a similar data  
structure to keep running timing stats would be pretty cheap and  
easy, but I don't know how generally applicable it'd be.  You'd lose  
the general discoverability I rather like, and you'd have to modify  
your key space to include the origin server somehow.

	How does yours work?

Dustin Sallings

More information about the memcached mailing list