Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Memcache stats understanding

Tags:

Memcache telnet interface has command called STATS, it shows a lot of numbers, where can I read what does it mean ? how to analyze them ? how much cache usage is effective etc ...

like image 983
user1016265 Avatar asked Feb 27 '13 11:02

user1016265


People also ask

How does memcache work?

How does Memcached work? Unlike databases that store data on disk or SSDs, Memcached keeps its data in memory. By eliminating the need to access disks, in-memory key-value stores such as Memcached avoid seek time delays and can access data in microseconds.

Is memcache key-value?

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering. Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches.

How does memcache cluster work?

Each node in a Memcached cluster has its own endpoint. The cluster also has an endpoint called the configuration endpoint. If you enable Auto Discovery and connect to the configuration endpoint, your application automatically knows each node endpoint, even after adding or removing nodes from the cluster.


2 Answers

Quoting from the information on this blog post: http://www.pal-blog.de/entwicklung/memcached/2011/memcached-statistics-stats-command.html

Field   Sample value    Description accepting_conns     1   The Memcached server is currently accepting new connections. auth_cmds   0   Number of authentication commands processed by the server - if you use authentication within your installation. The default is IP (routing) level security which speeds up the actual Memcached usage by removing the authentication requirement. auth_errors     0   Number of failed authentication tries of clients. bytes   6775829     Number of bytes currently used for caching items, this server currently uses ~6 MB of it's maximum allowed (limit_maxbytes) 1 GB cache size. bytes_read  880545081   Total number of bytes received from the network by this server. bytes_written   3607442137  Total number of bytes send to the network by this server. cas_badval  0   The "cas" command is some kind of Memcached's way to avoid locking. "cas" calls with bad identifier are counted in this stats key. cas_hits    0   Number of successful "cas" commands. cas_misses  0   "cas" calls fail if the value has been changed since it was requested from the cache. We're currently not using "cas" at all, so all three cas values are zero. cmd_flush   0   The "flush_all" command clears the whole cache and shouldn't be used during normal operation. cmd_get     1626823     Number of "get" commands received since server startup not counting if they were successful or not. cmd_set     2279784     Number of "set" commands serviced since startup. connection_structures   42  Number of internal connection handles currently held by the server. May be used as some kind of "maximum parallel connection count" but the server may destroy connection structures (don't know if he ever does) or prepare some without having actual connections for them (also don't know if he does). 42 maximum connections and 34 current connections (curr_connections) sounds reasonable, the live servers also have about 10% more connection_structures than curr_connections. conn_yields     1   Memcached has a configurable maximum number of requests per event (-R command line argument), this counter shows the number of times any client hit this limit. curr_connections    34  Number of open connections to this Memcached server, should be the same value on all servers during normal operation. This is something like the count of mySQL's "SHOW PROCESSLIST" result rows. curr_items  30345   Number of items currently in this server's cache. The production system of this development environment holds more than 8 million items. decr_hits   0   The "decr" command decreases a stored (integer) value by 1. A "hit" is a "decr" call to an existing key. decr_misses     0   "decr" command calls to undefined keys. delete_hits     138707  Stored keys may be deleted using the "delete" command, this system doesn't delete cached data itself, but it's using the Memcached to avoid recaching-races and the race keys are deleted once the race is over and fresh content has been cached. delete_misses   107095  Number of "delete" commands for keys not existing within the cache. These 107k failed deletes are deletions of non existent race keys (see above). evictions   0   Number of objects removed from the cache to free up memory for new items because Memcached reached it's maximum memory setting (limit_maxbytes). get_hits    391283  Number of successful "get" commands (cache hits) since startup, divide them by the "cmd_get" value to get the cache hitrate: This server was able to serve 24% of it's get requests from the cache, the live servers of this installation usually have more than 98% hits. get_misses  1235540     Number of failed "get" requests because nothing was cached for this key or the cached value was too old. incr_hits   0   Number of successful "incr" commands processed. "incr" is a replace adding 1 to the stored value and failing if no value is stored. This specific installation (currently) doesn't use incr/decr commands, so all their values are zero. incr_misses     0   Number of failed "incr" commands (see incr_hits). limit_maxbytes  1073741824  Maximum configured cache size (set on the command line while starting the memcached server), look at the "bytes" value for the actual usage. listen_disabled_num     0   Number of denied connection attempts because memcached reached it's configured connection limit ("-c" command line argument). pid     24040   Current process ID of the Memcached task. pointer_size    64  Number of bits of the hostsystem, may show "32" instead of "64" if the running Memcached binary was compiled for 32 bit environments and is running on a 64 bit system. reclaimed   14740   Numer of times a write command to the cached used memory from another expired key. These are not storage operations deleting old items due to a full cache. rusage_system   310.030000  Number of system time seconds for this server process. rusage_user     103.230000  Numer of user time seconds for this server process. threads     4   Number of threads used by the current Memcached server process. time    1323008181  Current unix timestamp of the Memcached's server. total_connections   27384   Numer of successful connect attempts to this server since it has been started. Roughly $number_of_connections_per_task * $number_of_webserver_tasks * $number_of_webserver_restarts. total_items     323615  Numer of items stored ever stored on this server. This is no "maximum item count" value but a counted increased by every new item stored in the cache. uptime  1145873     Numer of seconds the Memcached server has been running since last restart.1145873 / (60 * 60 * 24) = ~13 days since this server has been restarted version     1.4.5   Version number of the server 
like image 137
foz Avatar answered Oct 12 '22 11:10

foz


The updated documentation for this is found at https://github.com/memcached/memcached/blob/master/doc/protocol.txt.

|-----------------------+---------+-------------------------------------------| | Name                  | Type    | Meaning                                   | |-----------------------+---------+-------------------------------------------| | pid                   | 32u     | Process id of this server process         | | uptime                | 32u     | Number of secs since the server started   | | time                  | 32u     | current UNIX time according to the server | | version               | string  | Version string of this server             | | pointer_size          | 32      | Default size of pointers on the host OS   | |                       |         | (generally 32 or 64)                      | | rusage_user           | 32u.32u | Accumulated user time for this process    | |                       |         | (seconds:microseconds)                    | | rusage_system         | 32u.32u | Accumulated system time for this process  | |                       |         | (seconds:microseconds)                    | | curr_items            | 64u     | Current number of items stored            | | total_items           | 64u     | Total number of items stored since        | |                       |         | the server started                        | | bytes                 | 64u     | Current number of bytes used              | |                       |         | to store items                            | | max_connections       | 32u     | Max number of simultaneous connections    | | curr_connections      | 32u     | Number of open connections                | | total_connections     | 32u     | Total number of connections opened since  | |                       |         | the server started running                | | rejected_connections  | 64u     | Conns rejected in maxconns_fast mode      | | connection_structures | 32u     | Number of connection structures allocated | |                       |         | by the server                             | | reserved_fds          | 32u     | Number of misc fds used internally        | | cmd_get               | 64u     | Cumulative number of retrieval reqs       | | cmd_set               | 64u     | Cumulative number of storage reqs         | | cmd_flush             | 64u     | Cumulative number of flush reqs           | | cmd_touch             | 64u     | Cumulative number of touch reqs           | | get_hits              | 64u     | Number of keys that have been requested   | |                       |         | and found present                         | | get_misses            | 64u     | Number of items that have been requested  | |                       |         | and not found                             | | get_expired           | 64u     | Number of items that have been requested  | |                       |         | but had already expired.                  | | get_flushed           | 64u     | Number of items that have been requested  | |                       |         | but have been flushed via flush_all       | | delete_misses         | 64u     | Number of deletions reqs for missing keys | | delete_hits           | 64u     | Number of deletion reqs resulting in      | |                       |         | an item being removed.                    | | incr_misses           | 64u     | Number of incr reqs against missing keys. | | incr_hits             | 64u     | Number of successful incr reqs.           | | decr_misses           | 64u     | Number of decr reqs against missing keys. | | decr_hits             | 64u     | Number of successful decr reqs.           | | cas_misses            | 64u     | Number of CAS reqs against missing keys.  | | cas_hits              | 64u     | Number of successful CAS reqs.            | | cas_badval            | 64u     | Number of CAS reqs for which a key was    | |                       |         | found, but the CAS value did not match.   | | touch_hits            | 64u     | Number of keys that have been touched     | |                       |         | with a new expiration time                | | touch_misses          | 64u     | Number of items that have been touched    | |                       |         | and not found                             | | auth_cmds             | 64u     | Number of authentication commands         | |                       |         | handled, success or failure.              | | auth_errors           | 64u     | Number of failed authentications.         | | idle_kicks            | 64u     | Number of connections closed due to       | |                       |         | reaching their idle timeout.              | | evictions             | 64u     | Number of valid items removed from cache  | |                       |         | to free memory for new items              | | reclaimed             | 64u     | Number of times an entry was stored using | |                       |         | memory from an expired entry              | | bytes_read            | 64u     | Total number of bytes read by this server | |                       |         | from network                              | | bytes_written         | 64u     | Total number of bytes sent by this server | |                       |         | to network                                | | limit_maxbytes        | size_t  | Number of bytes this server is allowed to | |                       |         | use for storage.                          | | accepting_conns       | bool    | Whether or not server is accepting conns  | | listen_disabled_num   | 64u     | Number of times server has stopped        | |                       |         | accepting new connections (maxconns).     | | time_in_listen_disabled_us                                                  | |                       | 64u     | Number of microseconds in maxconns.       | | threads               | 32u     | Number of worker threads requested.       | |                       |         | (see doc/threads.txt)                     | | conn_yields           | 64u     | Number of times any connection yielded to | |                       |         | another due to hitting the -R limit.      | | hash_power_level      | 32u     | Current size multiplier for hash table    | | hash_bytes            | 64u     | Bytes currently used by hash tables       | | hash_is_expanding     | bool    | Indicates if the hash table is being      | |                       |         | grown to a new size                       | | expired_unfetched     | 64u     | Items pulled from LRU that were never     | |                       |         | touched by get/incr/append/etc before     | |                       |         | expiring                                  | | evicted_unfetched     | 64u     | Items evicted from LRU that were never    | |                       |         | touched by get/incr/append/etc.           | | evicted_active        | 64u     | Items evicted from LRU that had been hit  | |                       |         | recently but did not jump to top of LRU   | | slab_reassign_running | bool    | If a slab page is being moved             | | slabs_moved           | 64u     | Total slab pages moved                    | | crawler_reclaimed     | 64u     | Total items freed by LRU Crawler          | | crawler_items_checked | 64u     | Total items examined by LRU Crawler       | | lrutail_reflocked     | 64u     | Times LRU tail was found with active ref. | |                       |         | Items can be evicted to avoid OOM errors. | | moves_to_cold         | 64u     | Items moved from HOT/WARM to COLD LRU's   | | moves_to_warm         | 64u     | Items moved from COLD to WARM LRU         | | moves_within_lru      | 64u     | Items reshuffled within HOT or WARM LRU's | | direct_reclaims       | 64u     | Times worker threads had to directly      | |                       |         | reclaim or evict items.                   | | lru_crawler_starts    | 64u     | Times an LRU crawler was started          | | lru_maintainer_juggles                                                      | |                       | 64u     | Number of times the LRU bg thread woke up | | slab_global_page_pool | 32u     | Slab pages returned to global pool for    | |                       |         | reassignment to other slab classes.       | | slab_reassign_rescues | 64u     | Items rescued from eviction in page move  | | slab_reassign_evictions_nomem                                               | |                       | 64u     | Valid items evicted during a page move    | |                       |         | (due to no free memory in slab)           | | slab_reassign_chunk_rescues                                                 | |                       | 64u     | Individual sections of an item rescued    | |                       |         | during a page move.                       | | slab_reassign_inline_reclaim                                                | |                       | 64u     | Internal stat counter for when the page   | |                       |         | mover clears memory from the chunk        | |                       |         | freelist when it wasn't expecting to.     | | slab_reassign_busy_items                                                    | |                       | 64u     | Items busy during page move, requiring a  | |                       |         | retry before page can be moved.           | | slab_reassign_busy_deletes                                                  | |                       | 64u     | Items busy during page move, requiring    | |                       |         | deletion before page can be moved.        | | log_worker_dropped    | 64u     | Logs a worker never wrote due to full buf | | log_worker_written    | 64u     | Logs written by a worker, to be picked up | | log_watcher_skipped   | 64u     | Logs not sent to slow watchers.           | | log_watcher_sent      | 64u     | Logs written to watchers.                 | |-----------------------+---------+-------------------------------------------| 
like image 36
cjbarth Avatar answered Oct 12 '22 12:10

cjbarth