Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

adding example output as well

  • Loading branch information...
commit aab8b114110bb765b018f70fc837a46f6abbab04 1 parent f394179
Peter Schmalfeldt peter-schmalfeldt authored
Showing with 421 additions and 54 deletions.
  1. +180 −54 README
  2. +241 −0 README.markdown
234 README
View
@@ -1,3 +1,6 @@
+Introduction
+============
+
PHP Classes & Examples for both Memcache & Memcached modules. Source code includes Sample Reports as well as Documentation. Currently tested to work with memcached 1.4.3 & pecl extension 2.2.5.
Our Memcached Class now supports key tagging !!! Add by key, delete by key, search by key, use namespacing... whatever... you're the boss ;)
@@ -6,36 +9,30 @@ Also, if you have not already checked it out, we have a sweet tool to generate a
http://www.manifestinteractive.com/usenet/memcached/reports/report_sample.html
-----------
-Introduction
-----------
-
This project will host PHP Classes & Examples for both Memcache & Memcached modules. Source code includes Sample Reports as well as Documentation. Currently tested to work with memcached 1.4.3 & pecl extension 2.2.5.
-----------
Details
-----------
+=======
My efforts are to make it easier to "visualize" our Memcache servers. I would love to hear your thoughts on ways this might be achieved. So far I am focusing on:
- * Showing Visual Graphs with Memory Usage
- * Highlighting Potential Problems that may need to be addressed
- * Still leaving room for your own customizations
- * I look forward to any feedback you have and am happy to work in any worthwhile features you may want added.
+* Showing Visual Graphs with Memory Usage
+* Highlighting Potential Problems that may need to be addressed
+* Still leaving room for your own customizations
+* I look forward to any feedback you have and am happy to work in any worthwhile features you may want added.
-----------
Known Issue with PECL 2.2.5 & Memcached 1.4.3
-----------
+=============================================
There is a known issue that might cause some headaches for some people. Fortunately Harv over at php.net has already worked out a solution. If you are running Memcached 1.4.3 with the PECL extension 2.2.5, you will not be able to delete a key. If you did a var_dump(debug_backtrace()); you would see an error that reads CLIENT_ERROR bad command line format. Usage: delete <key> [noreply].
To fix this, search for a file named memcache.c and go to line 1494 and in the mmc_delete() function replace:
-command_len = spprintf(&command, 0, "delete %s %d", key, time);
+ command_len = spprintf(&command, 0, "delete %s %d", key, time);
with
-command_len = spprintf(&command, 0, "delete %s", key);
+ command_len = spprintf(&command, 0, "delete %s", key);
Once you have saved the file... just recompile, restart apache, and you are good to go.
@@ -43,11 +40,10 @@ Here is the Original Thread where I found the fix from Harv.
Hope this helps somebody like it helped me.
-----------
Definitions
-----------
+===========
-In case you have had a rough time trying to wrap your head around what some of the variables are actually for... here is a comprehensive list and a link to the resources where we discovered this information. Hope this helps! If it doesn't, head over to our Google Group to ask for help.
+In case you have had a rough time trying to wrap your head around what some of the variables are actually for... here is a comprehensive list to the resources where we discovered this information. Hope this helps!
While you are reading these statistical definitions... keep in mind that the most useful statistics from those given here are the number of cache hits, misses, and evictions.
@@ -55,61 +51,191 @@ A large number of get_misses may just be an indication that the cache is still b
A large number of evictions from the cache, particularly in comparison to the number of items stored is a sign that your cache is too small to hold the amount of information that you regularly want to keep cached. Instead of items being retained in the cache, items are being evicted to make way for new items keeping the turnover of items in the cache high, reducing the efficiency of the cache.
-Server Statistics
+Sample Statistics Output
+------------------------
+
+ Array
+ (
+ [localhost:11211] => Array
+ (
+ [pid] => 24187
+ [uptime] => 135454
+ [time] => 1258121472
+ [version] => 1.4.3
+ [pointer_size] => 32
+ [rusage_user] => 0.537918
+ [rusage_system] => 1.757732
+ [curr_connections] => 8
+ [total_connections] => 1874
+ [connection_structures] => 57
+ [cmd_get] => 16287
+ [cmd_set] => 7223
+ [cmd_flush] => 33
+ [get_hits] => 9940
+ [get_misses] => 6347
+ [delete_misses] => 0
+ [delete_hits] => 0
+ [incr_misses] => 0
+ [incr_hits] => 1
+ [decr_misses] => 0
+ [decr_hits] => 1
+ [cas_misses] => 0
+ [cas_hits] => 0
+ [cas_badval] => 0
+ [bytes_read] => 234200204
+ [bytes_written] => 272407668
+ [limit_maxbytes] => 134217728
+ [accepting_conns] => 1
+ [listen_disabled_num] => 0
+ [threads] => 4
+ [conn_yields] => 0
+ [bytes] => 59464725
+ [curr_items] => 3430
+ [total_items] => 7145
+ [evictions] => 0
+ )
+
+ [localhost:11212] => Array
+ (
+ [pid] => 24226
+ [uptime] => 135451
+ [time] => 1258121472
+ [version] => 1.4.3
+ [pointer_size] => 32
+ [rusage_user] => 0.131979
+ [rusage_system] => 0.821875
+ [curr_connections] => 5
+ [total_connections] => 651
+ [connection_structures] => 7
+ [cmd_get] => 121
+ [cmd_set] => 56
+ [cmd_flush] => 0
+ [get_hits] => 116
+ [get_misses] => 5
+ [delete_misses] => 0
+ [delete_hits] => 2
+ [incr_misses] => 0
+ [incr_hits] => 52
+ [decr_misses] => 0
+ [decr_hits] => 52
+ [cas_misses] => 0
+ [cas_hits] => 0
+ [cas_badval] => 0
+ [bytes_read] => 11672
+ [bytes_written] => 445678
+ [limit_maxbytes] => 134217728
+ [accepting_conns] => 1
+ [listen_disabled_num] => 0
+ [threads] => 4
+ [conn_yields] => 0
+ [bytes] => 453
+ [curr_items] => 2
+ [total_items] => 49
+ [evictions] => 0
+ )
+
+ [localhost:11213] => Array
+ (
+ [pid] => 24280
+ [uptime] => 135447
+ [time] => 1258121471
+ [version] => 1.4.3
+ [pointer_size] => 32
+ [rusage_user] => 0.156976
+ [rusage_system] => 0.249962
+ [curr_connections] => 5
+ [total_connections] => 626
+ [connection_structures] => 8
+ [cmd_get] => 0
+ [cmd_set] => 14
+ [cmd_flush] => 0
+ [get_hits] => 0
+ [get_misses] => 0
+ [delete_misses] => 0
+ [delete_hits] => 0
+ [incr_misses] => 0
+ [incr_hits] => 0
+ [decr_misses] => 0
+ [decr_hits] => 0
+ [cas_misses] => 0
+ [cas_hits] => 0
+ [cas_badval] => 0
+ [bytes_read] => 9738
+ [bytes_written] => 444431
+ [limit_maxbytes] => 134217728
+ [accepting_conns] => 1
+ [listen_disabled_num] => 0
+ [threads] => 4
+ [conn_yields] => 0
+ [bytes] => 394
+ [curr_items] => 1
+ [total_items] => 1
+ [evictions] => 0
+ )
+
+ )
-accepting_conns Accepting Connections 1 or 0 to indicate whether the server is currently accepting connections or not.
-version Memcache Version Version string of this instance.
-pid Process ID Process id of the memcached instance.
-pointer_size Pointer Size Size of pointers for this host specified in bits (32 or 64).
-threads Threads Number of worker threads requested.
-rusage_system System CPU Usage Total system time for this instance (seconds:microseconds).
-rusage_user User CPU Usage Total user time for this instance (seconds:microseconds).
-time Time Current time (as epoch).
-uptime Uptime Uptime for this memcached instance (seconds:microseconds).
+Server Statistics
+-----------------
+
+ accepting_conns Accepting Connections 1 or 0 to indicate whether the server is currently accepting connections or not.
+ version Memcache Version Version string of this instance.
+ pid Process ID Process id of the memcached instance.
+ pointer_size Pointer Size Size of pointers for this host specified in bits (32 or 64).
+ threads Threads Number of worker threads requested.
+ rusage_system System CPU Usage Total system time for this instance (seconds:microseconds).
+ rusage_user User CPU Usage Total user time for this instance (seconds:microseconds).
+ time Time Current time (as epoch).
+ uptime Uptime Uptime for this memcached instance (seconds:microseconds).
To get the start time for your service, just subtract time from uptime (uptime-time).
Memory Usage
+------------
-limit_maxbytes Memory Allocation Number of bytes this server is allowed to use for storage.
-bytes Memory In Use Current number of bytes used by this server to store items.
-bytes_read Total Read Memory Total number of bytes read by this server from network.
-bytes_written Total Written Memory Total number of bytes sent by this server to network.
+ limit_maxbytes Memory Allocation Number of bytes this server is allowed to use for storage.
+ bytes Memory In Use Current number of bytes used by this server to store items.
+ bytes_read Total Read Memory Total number of bytes read by this server from network.
+ bytes_written Total Written Memory Total number of bytes sent by this server to network.
To get available memory, just subtract bytes from limit_maxbytes (limit_maxbytes-bytes).
Connection Information
-curr_connections Current Connections Current number of open connections.
-total_connections Total Connections Total number of connections opened since the server started running.
-conn_yields Connection Yields Number of yields for connections.
-connection_structures Connection Structures Number of connection structures allocated by the server.
+----------------------
+
+ curr_connections Current Connections Current number of open connections.
+ total_connections Total Connections Total number of connections opened since the server started running.
+ conn_yields Connection Yields Number of yields for connections.
+ connection_structures Connection Structures Number of connection structures allocated by the server.
Still not 100% sure what connection_structures or conn_yields are... Anyone?
Memcache Statistics
-
-listen_disabled_num Listeners Disabled The number of times socket listeners were disabled due to hitting the connection limit.
-evictions Evections Number of valid items removed from cache to free memory for new items.
-cmd_flush CMD Flush Used Total number of flush requests.
-cmd_get CMD Get Used Total number of retrieval requests.
-cmd_set CMD Set Used Total number of storage requests.
-cas_badval CAS Bad Value Number of keys that have been compared and swapped, but the comparison (original) value did not match the supplied value.
-cas_hits CAS Hits Number of keys that have been compared and swapped and found present.
-cas_misses CAS Misses Number of items that have been compared and swapped and not found.
-get_hits Get Hits Number of keys that have been requested and found present.
-get_misses Get Misses Number of items that have been requested and not found.
-delete_hits Delete Hits Number of keys that have been deleted and found present.
-delete_misses Delete Misses Number of items that have been delete and not found.
-incr_hits Increment Hits Number of keys that have been incremented and found present.
-incr_misses Increment Misses Number of items that have been incremented and not found.
-decr_hits Decrement Hits Number of keys that have been decremented and found present.
-decr_misses Decrement Misses Number of items that have been decremented and not found.
+-------------------
+
+ listen_disabled_num Listeners Disabled The number of times socket listeners were disabled due to hitting the connection limit.
+ evictions Evections Number of valid items removed from cache to free memory for new items.
+ cmd_flush CMD Flush Used Total number of flush requests.
+ cmd_get CMD Get Used Total number of retrieval requests.
+ cmd_set CMD Set Used Total number of storage requests.
+ cas_badval CAS Bad Value Number of keys that have been compared and swapped, but the comparison (original) value did not match the supplied value.
+ cas_hits CAS Hits Number of keys that have been compared and swapped and found present.
+ cas_misses CAS Misses Number of items that have been compared and swapped and not found.
+ get_hits Get Hits Number of keys that have been requested and found present.
+ get_misses Get Misses Number of items that have been requested and not found.
+ delete_hits Delete Hits Number of keys that have been deleted and found present.
+ delete_misses Delete Misses Number of items that have been delete and not found.
+ incr_hits Increment Hits Number of keys that have been incremented and found present.
+ incr_misses Increment Misses Number of items that have been incremented and not found.
+ decr_hits Decrement Hits Number of keys that have been decremented and found present.
+ decr_misses Decrement Misses Number of items that have been decremented and not found.
Pretty much anything that is a miss can be bad. Evictions can be bad too. Read the notes above for more info.
Item Information
+----------------
-curr_items Current Items Current number of items stored by this instance.
-total_items Total Items Total number of items stored during the life of this instance.
+ curr_items Current Items Current number of items stored by this instance.
+ total_items Total Items Total number of items stored during the life of this instance.
And that does it... for this version of Memcached anyway (1.4.3)
241 README.markdown
View
@@ -0,0 +1,241 @@
+Introduction
+============
+
+PHP Classes & Examples for both Memcache & Memcached modules. Source code includes Sample Reports as well as Documentation. Currently tested to work with memcached 1.4.3 & pecl extension 2.2.5.
+
+Our Memcached Class now supports key tagging !!! Add by key, delete by key, search by key, use namespacing... whatever... you're the boss ;)
+
+Also, if you have not already checked it out, we have a sweet tool to generate a report on your Memcached memory usage. See our Sample Report !
+
+http://www.manifestinteractive.com/usenet/memcached/reports/report_sample.html
+
+This project will host PHP Classes & Examples for both Memcache & Memcached modules. Source code includes Sample Reports as well as Documentation. Currently tested to work with memcached 1.4.3 & pecl extension 2.2.5.
+
+Details
+=======
+
+My efforts are to make it easier to "visualize" our Memcache servers. I would love to hear your thoughts on ways this might be achieved. So far I am focusing on:
+
+* Showing Visual Graphs with Memory Usage
+* Highlighting Potential Problems that may need to be addressed
+* Still leaving room for your own customizations
+* I look forward to any feedback you have and am happy to work in any worthwhile features you may want added.
+
+Known Issue with PECL 2.2.5 & Memcached 1.4.3
+=============================================
+
+There is a known issue that might cause some headaches for some people. Fortunately Harv over at php.net has already worked out a solution. If you are running Memcached 1.4.3 with the PECL extension 2.2.5, you will not be able to delete a key. If you did a var_dump(debug_backtrace()); you would see an error that reads CLIENT_ERROR bad command line format. Usage: delete <key> [noreply].
+
+To fix this, search for a file named memcache.c and go to line 1494 and in the mmc_delete() function replace:
+
+ command_len = spprintf(&command, 0, "delete %s %d", key, time);
+
+with
+
+ command_len = spprintf(&command, 0, "delete %s", key);
+
+Once you have saved the file... just recompile, restart apache, and you are good to go.
+
+Here is the Original Thread where I found the fix from Harv.
+
+Hope this helps somebody like it helped me.
+
+Definitions
+===========
+
+In case you have had a rough time trying to wrap your head around what some of the variables are actually for... here is a comprehensive list to the resources where we discovered this information. Hope this helps!
+
+While you are reading these statistical definitions... keep in mind that the most useful statistics from those given here are the number of cache hits, misses, and evictions.
+
+A large number of get_misses may just be an indication that the cache is still being populated with information. The number should, over time, decrease in comparison to the number of cache get_hits. If, however, you have a large number of cache misses compared to cache hits after an extended period of execution, it may be an indication that the size of the cache is too small and you either need to increase the total memory size, or increase the number of the memcached instances to improve the hit ratio.
+
+A large number of evictions from the cache, particularly in comparison to the number of items stored is a sign that your cache is too small to hold the amount of information that you regularly want to keep cached. Instead of items being retained in the cache, items are being evicted to make way for new items keeping the turnover of items in the cache high, reducing the efficiency of the cache.
+
+Sample Statistics Output
+------------------------
+
+ Array
+ (
+ [localhost:11211] => Array
+ (
+ [pid] => 24187
+ [uptime] => 135454
+ [time] => 1258121472
+ [version] => 1.4.3
+ [pointer_size] => 32
+ [rusage_user] => 0.537918
+ [rusage_system] => 1.757732
+ [curr_connections] => 8
+ [total_connections] => 1874
+ [connection_structures] => 57
+ [cmd_get] => 16287
+ [cmd_set] => 7223
+ [cmd_flush] => 33
+ [get_hits] => 9940
+ [get_misses] => 6347
+ [delete_misses] => 0
+ [delete_hits] => 0
+ [incr_misses] => 0
+ [incr_hits] => 1
+ [decr_misses] => 0
+ [decr_hits] => 1
+ [cas_misses] => 0
+ [cas_hits] => 0
+ [cas_badval] => 0
+ [bytes_read] => 234200204
+ [bytes_written] => 272407668
+ [limit_maxbytes] => 134217728
+ [accepting_conns] => 1
+ [listen_disabled_num] => 0
+ [threads] => 4
+ [conn_yields] => 0
+ [bytes] => 59464725
+ [curr_items] => 3430
+ [total_items] => 7145
+ [evictions] => 0
+ )
+
+ [localhost:11212] => Array
+ (
+ [pid] => 24226
+ [uptime] => 135451
+ [time] => 1258121472
+ [version] => 1.4.3
+ [pointer_size] => 32
+ [rusage_user] => 0.131979
+ [rusage_system] => 0.821875
+ [curr_connections] => 5
+ [total_connections] => 651
+ [connection_structures] => 7
+ [cmd_get] => 121
+ [cmd_set] => 56
+ [cmd_flush] => 0
+ [get_hits] => 116
+ [get_misses] => 5
+ [delete_misses] => 0
+ [delete_hits] => 2
+ [incr_misses] => 0
+ [incr_hits] => 52
+ [decr_misses] => 0
+ [decr_hits] => 52
+ [cas_misses] => 0
+ [cas_hits] => 0
+ [cas_badval] => 0
+ [bytes_read] => 11672
+ [bytes_written] => 445678
+ [limit_maxbytes] => 134217728
+ [accepting_conns] => 1
+ [listen_disabled_num] => 0
+ [threads] => 4
+ [conn_yields] => 0
+ [bytes] => 453
+ [curr_items] => 2
+ [total_items] => 49
+ [evictions] => 0
+ )
+
+ [localhost:11213] => Array
+ (
+ [pid] => 24280
+ [uptime] => 135447
+ [time] => 1258121471
+ [version] => 1.4.3
+ [pointer_size] => 32
+ [rusage_user] => 0.156976
+ [rusage_system] => 0.249962
+ [curr_connections] => 5
+ [total_connections] => 626
+ [connection_structures] => 8
+ [cmd_get] => 0
+ [cmd_set] => 14
+ [cmd_flush] => 0
+ [get_hits] => 0
+ [get_misses] => 0
+ [delete_misses] => 0
+ [delete_hits] => 0
+ [incr_misses] => 0
+ [incr_hits] => 0
+ [decr_misses] => 0
+ [decr_hits] => 0
+ [cas_misses] => 0
+ [cas_hits] => 0
+ [cas_badval] => 0
+ [bytes_read] => 9738
+ [bytes_written] => 444431
+ [limit_maxbytes] => 134217728
+ [accepting_conns] => 1
+ [listen_disabled_num] => 0
+ [threads] => 4
+ [conn_yields] => 0
+ [bytes] => 394
+ [curr_items] => 1
+ [total_items] => 1
+ [evictions] => 0
+ )
+
+ )
+
+Server Statistics
+-----------------
+
+ accepting_conns Accepting Connections 1 or 0 to indicate whether the server is currently accepting connections or not.
+ version Memcache Version Version string of this instance.
+ pid Process ID Process id of the memcached instance.
+ pointer_size Pointer Size Size of pointers for this host specified in bits (32 or 64).
+ threads Threads Number of worker threads requested.
+ rusage_system System CPU Usage Total system time for this instance (seconds:microseconds).
+ rusage_user User CPU Usage Total user time for this instance (seconds:microseconds).
+ time Time Current time (as epoch).
+ uptime Uptime Uptime for this memcached instance (seconds:microseconds).
+
+To get the start time for your service, just subtract time from uptime (uptime-time).
+
+Memory Usage
+------------
+
+ limit_maxbytes Memory Allocation Number of bytes this server is allowed to use for storage.
+ bytes Memory In Use Current number of bytes used by this server to store items.
+ bytes_read Total Read Memory Total number of bytes read by this server from network.
+ bytes_written Total Written Memory Total number of bytes sent by this server to network.
+
+To get available memory, just subtract bytes from limit_maxbytes (limit_maxbytes-bytes).
+
+Connection Information
+----------------------
+
+ curr_connections Current Connections Current number of open connections.
+ total_connections Total Connections Total number of connections opened since the server started running.
+ conn_yields Connection Yields Number of yields for connections.
+ connection_structures Connection Structures Number of connection structures allocated by the server.
+
+Still not 100% sure what connection_structures or conn_yields are... Anyone?
+
+Memcache Statistics
+-------------------
+
+ listen_disabled_num Listeners Disabled The number of times socket listeners were disabled due to hitting the connection limit.
+ evictions Evections Number of valid items removed from cache to free memory for new items.
+ cmd_flush CMD Flush Used Total number of flush requests.
+ cmd_get CMD Get Used Total number of retrieval requests.
+ cmd_set CMD Set Used Total number of storage requests.
+ cas_badval CAS Bad Value Number of keys that have been compared and swapped, but the comparison (original) value did not match the supplied value.
+ cas_hits CAS Hits Number of keys that have been compared and swapped and found present.
+ cas_misses CAS Misses Number of items that have been compared and swapped and not found.
+ get_hits Get Hits Number of keys that have been requested and found present.
+ get_misses Get Misses Number of items that have been requested and not found.
+ delete_hits Delete Hits Number of keys that have been deleted and found present.
+ delete_misses Delete Misses Number of items that have been delete and not found.
+ incr_hits Increment Hits Number of keys that have been incremented and found present.
+ incr_misses Increment Misses Number of items that have been incremented and not found.
+ decr_hits Decrement Hits Number of keys that have been decremented and found present.
+ decr_misses Decrement Misses Number of items that have been decremented and not found.
+
+Pretty much anything that is a miss can be bad. Evictions can be bad too. Read the notes above for more info.
+
+Item Information
+----------------
+
+ curr_items Current Items Current number of items stored by this instance.
+ total_items Total Items Total number of items stored during the life of this instance.
+
+And that does it... for this version of Memcached anyway (1.4.3)
Please sign in to comment.
Something went wrong with that request. Please try again.