memcached optimizes specific high-load serving applications that are designed to take advantage of its versatile no-locking memory access system. Clients are available in several different programming languages, to suit the needs of the specific application. Traditionally this has been used in mod_perl apps to avoid storing large chunks of data in Apache memory, and to share this burden across several machines.

Overview

Memcached is a Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

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.

Usage

You can deploy a memcached instance with

juju deploy memcached

Memcached listens to port 11211 on the internal network, it is not recommended to expose memcached directly to the open internet. If you want to check that it has deployed correctly you can ssh into the unit and then check the port by hand:

juju status memcached
juju ssh memcached/3
echo "stats settings" | nc localhost 11211

The "3" in this case is an example, the juju status memcached will show you which machine number the service is running on so you can juju ssh to it.

Example Usage

This charm can be used with other charms, in particular make note of these possible relations

To use memcached with the Rails charm follow these instructions

Scale out Usage

You can

juju add-unit memcached

To add more units. Memcached doesn't share load, it's very simple and the clients have the intelligence to know which server to pick.

Known Limitations and Issues

Configuration

Standard configuration options are provided, we recommend scanning the Memcached documentation before tweaking the default configuration.

Contact Information

Memcached

Configuration

request-limit
(int)
                            limit of requests a single client can make at one time
(memcached option -R) -1 takes memcached default (20)

                        
-1
slab-page-size
(int)
                            Override the size of each slab page in bytes. In mundane
words, it adjusts  the  maximum  item  size that  memcached
will  accept.  You can use the suffixes K and M to specify
the size as well, so use 2000000 or 2000K or 2M if you want
a maximum size of 2 MB per object.   It  is  not  recommended
to raise this limit above 1 MB due just to performance reasons.
The default value is 1 MB. (memcached option -I) -1 takes
the memcached default.

                        
-1
min-item-size
(int)
                            Allocate a minimum of <size> bytes for the item key, value,
and flags. The default  is  48.  If  you have  a  lot of small
keys and values, you can get a significant memory efficiency
gain with a lower value. If you use a high chunk growth factor
(-f option),  on  the  other  hand,  you  may  want  to
increase  the  size  to  allow  a  bigger percentage of your
items to fit in the most densely packed (smallest) chunks.
(memcached option -n)

                        
-1
disable-large-pages
(string)
                            The charm will will try to use large pages if given more than 2GB of RAM. You may want to disable this behavior. (memcached option -L)
                        
no
disable-cas
(string)
                            disable use of CAS (and reduce the per-item size by 8 bytes)
                        
no
connection-limit
(int)
                            maximum simultaneous connections (memcached option -c)
                        
1024
disable-auto-cleanup
(string)
                            do not remove things automatically from the cache on OOM
(memcached option -M)

                        
no
nagios_context
(string)
                            Used by the nrpe-external-master subordinate charm. A string that will be prepended to instance name to set the host name in nagios. So for instance the hostname would be something like:
    juju-memcached-0
If you're running multiple environments with the same services in them this allows you to differentiate between them.

                        
juju
threads
(int)
                            number of threads to use. default is 4. (memcached option -t)
                        
-1
factor
(float)
                            Use <factor> as the multiplier for computing the sizes of memory
chunks that items are stored in. A lower value may result in less
wasted memory depending on the total amount of memory available
and the distribution of item sizes. The default is 1.25.

                        
1.25
tcp-port
(int)
                            TCP port to listen on. (memcached option -p)
                        
11211
udp-port
(int)
                            UDP port to listen on (memcached option -U)
                        
extra-options
(string)
                            memcached has many other options documented in its man page. You may pass them here as a string which will be appended to memcached's execution.
                        
size
(int)
                            Size of memcache pool in MiB (memcached option -m)
                        
768