This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
Matt Ingenthron (author)
Thu Oct 15 19:38:46 -0700 2009
moxi /
| name | age | message | |
|---|---|---|---|
| |
.gitignore | Tue Sep 29 01:43:28 -0700 2009 | |
| |
.gitmodules | Fri Oct 02 09:38:33 -0700 2009 | |
| |
.shipit | Thu Dec 06 01:38:49 -0800 2007 | |
| |
AUTHORS | Fri Jun 13 19:27:53 -0700 2003 | |
| |
BUILD | Thu Jul 31 16:37:04 -0700 2003 | |
| |
COPYING | Thu Aug 05 20:04:15 -0700 2004 | |
| |
ChangeLog | Sat Apr 11 21:49:32 -0700 2009 | |
| |
Doxyfile | Fri Apr 17 16:27:17 -0700 2009 | |
| |
HACKING | Wed Sep 02 13:53:34 -0700 2009 | |
| |
LICENSE | Thu Aug 05 20:04:15 -0700 2004 | |
| |
Makefile.am | Fri Oct 02 07:43:18 -0700 2009 | |
| |
NEWS | Sat Jun 14 16:07:09 -0700 2003 | |
| |
README | Fri Apr 24 22:05:55 -0700 2009 | |
| |
TODO | Sat Sep 02 20:18:26 -0700 2006 | |
| |
TODO.moxi | Tue Jun 09 09:19:48 -0700 2009 | |
| |
agent.h | Mon Sep 28 06:53:16 -0700 2009 | |
| |
agent_config.c | Tue Sep 29 01:49:39 -0700 2009 | |
| |
agent_ping.c | Thu Aug 13 12:51:07 -0700 2009 | |
| |
agent_stats.c | Mon Sep 28 06:53:16 -0700 2009 | |
| |
assoc.c | Tue Mar 24 12:59:47 -0700 2009 | |
| |
assoc.h | Mon Mar 02 01:15:34 -0800 2009 | |
| |
autogen.sh | Fri Oct 09 13:46:06 -0700 2009 | |
| |
cache.c | Fri Apr 17 16:15:52 -0700 2009 | |
| |
cache.h | Fri Apr 17 16:15:58 -0700 2009 | |
| |
check_moxi.c | Mon Sep 28 06:52:46 -0700 2009 | |
| |
check_moxi_agent.c | Fri Oct 02 06:25:17 -0700 2009 | |
| |
check_util.c | Mon Sep 28 06:51:35 -0700 2009 | |
| |
check_work.c | Mon Sep 28 06:52:46 -0700 2009 | |
| |
configure.ac | Thu Oct 15 19:38:46 -0700 2009 | |
| |
cproxy.c | Tue Sep 29 01:49:39 -0700 2009 | |
| |
cproxy.h | Fri Sep 18 02:17:37 -0700 2009 | |
| |
cproxy_config.c | Wed Sep 02 13:07:49 -0700 2009 | |
| |
cproxy_front.c | Fri Sep 18 02:17:37 -0700 2009 | |
| |
cproxy_multiget.c | Fri Sep 18 02:17:37 -0700 2009 | |
| |
cproxy_protocol.c | Tue Sep 29 01:49:39 -0700 2009 | |
| |
cproxy_protocol_a2a.c | Wed Sep 02 13:07:49 -0700 2009 | |
| |
cproxy_protocol_a2b.c | Tue Sep 29 01:49:39 -0700 2009 | |
| |
cproxy_stats.c | Fri Sep 18 02:17:37 -0700 2009 | |
| |
daemon.c | Tue Jan 20 11:23:14 -0800 2009 | |
| |
debian/ | Wed Sep 23 14:01:38 -0700 2009 | |
| |
devtools/ | Thu Feb 21 20:57:41 -0800 2008 | |
| |
doc/ | Tue Sep 29 01:43:28 -0700 2009 | |
| |
genhash.c | Wed Sep 02 13:07:49 -0700 2009 | |
| |
genhash.h | Wed Sep 02 13:07:49 -0700 2009 | |
| |
genhash_int.h | Wed Sep 02 13:07:49 -0700 2009 | |
| |
globals.c | Thu Mar 19 01:52:53 -0700 2009 | |
| |
hash.c | Mon Mar 02 01:15:34 -0800 2009 | |
| |
hash.h | Mon Mar 02 01:15:34 -0800 2009 | |
| |
items.c | Wed Sep 09 21:31:42 -0700 2009 | |
| |
items.h | Thu Apr 02 12:24:08 -0700 2009 | |
| |
libconflate - 5717969 | Tue Oct 13 13:48:11 -0700 2009 | |
| |
libmemcached-0.30/ | Tue Oct 13 19:15:48 -0700 2009 | |
| |
matcher.c | Tue Jun 23 20:32:34 -0700 2009 | |
| |
matcher.h | Thu Jun 11 19:51:04 -0700 2009 | |
| |
memcached.c | Tue Sep 29 01:43:28 -0700 2009 | |
| |
memcached.h | Tue Sep 29 01:43:28 -0700 2009 | |
| |
memcached.spec.in | Wed Sep 09 21:31:42 -0700 2009 | |
| |
memcached_dtrace.d | Wed Sep 09 21:31:42 -0700 2009 | |
| |
patches/ | Sat Jul 04 14:01:35 -0700 2009 | |
| |
protocol_binary.h | Mon Jul 13 23:48:03 -0700 2009 | |
| |
redirects.c | Mon Sep 28 06:53:16 -0700 2009 | |
| |
redirects.h | Mon Sep 28 06:53:16 -0700 2009 | |
| |
scripts/ | Wed Sep 23 14:01:38 -0700 2009 | |
| |
sizes.c | Tue Mar 10 12:59:07 -0700 2009 | |
| |
slabs.c | Wed Sep 09 21:31:42 -0700 2009 | |
| |
slabs.h | Thu Apr 02 12:24:08 -0700 2009 | |
| |
solaris_priv.c | Wed Sep 09 21:31:42 -0700 2009 | |
| |
stats.c | Wed Sep 09 21:31:42 -0700 2009 | |
| |
stats.h | Sat Jan 03 00:09:11 -0800 2009 | |
| |
t/ | Tue Sep 29 01:43:28 -0700 2009 | |
| |
testapp.c | Wed Sep 09 21:31:42 -0700 2009 | |
| |
thread.c | Tue Sep 29 01:39:25 -0700 2009 | |
| |
timedrun.c | Wed Sep 09 21:31:42 -0700 2009 | |
| |
trace.h | Mon Mar 02 11:59:11 -0800 2009 | |
| |
util.c | Wed Sep 09 21:31:42 -0700 2009 | |
| |
util.h | Wed Sep 09 21:31:42 -0700 2009 | |
| |
version.sh | Tue Sep 29 01:43:28 -0700 2009 | |
| |
work.c | Sat Jun 20 00:37:01 -0700 2009 | |
| |
work.h | Sat Jun 20 00:37:01 -0700 2009 |
README
moxi - a memcached proxy with energy and pep Dependencies: -- libevent, http://www.monkey.org/~provos/libevent/ (libevent-dev) -- libmemcached, http://tangent.org/552/libmemcached.html To compile moxi, after you got the dependencies: ./autogen.sh ./configure make For example, if libevent is installed in /opt/local, you'd do... ./autogen.sh ./configure --with-libevent=/opt/local make Using moxi: In moxi terminology, "upstream" are the memcached clients, and "downstream" are the memcached servers. moxi -z <port=<memcached_host:memcached_port(,*)>> moxi will listen on the given port and accept connections from upstream memcached clients. It will forward requests to downstream memcached servers running on memcached_host:memcached_port. For example... moxi -z 11211=my_memcached_server:11222 Above, moxi will listen on port 11211 and forward requests to the memcached running on my_memcached_server that's listening on port 11222. You can list more than one memcached_host:memcached_port, separated by commas. For example... moxi -z 11211=memcached_1:11211,memcached_2:11211 The default downstream port is 11211, so you can also just use... moxi -z 11211=memcached_1,memcached_2 If you have some memcached servers running on the same server, but on different ports, you can put moxi in front of them with something like... moxi -z 11211=server:11222,server:11233 To get more command line usage info: moxi -h Tests: # To test that moxi still behaves like memcached # and passes all the tests that memcached passes... # make test # To test moxi in a simple proxy topology of... # client <-> moxi <-> memcached # ./t/moxi.pl # To test moxi in a chained proxy topology of... # client <-> moxi <-> moxi <-> moxi <-> memcached # ./t/moxi.pl chain # To test moxi in a fanout topology of... # client <---> moxi <---> memcached # |-> memcached # |-> memcached # |-> memcached # ./t/moxi.pl fanout # To test moxi in a fanout and back in again topology of... # client <---> moxi <---> moxi <-> memcached # |-> moxi <-| # |-> moxi <-| # |-> moxi <-| # ./t/moxi.pl fanoutin # To test moxi proxy cases... # ./moxi -z 11333=localhost:11311 -t 1 python t/moxi_mock.py More notes: If using Linux, you need a kernel with epoll. Sure, libevent will work with normal select, but it sucks. epoll isn't in Linux 2.4 yet, but there's a backport at: http://www.xmailserver.org/linux-patches/nio-improve.html You want the epoll-lt patch (level-triggered). If you're using MacOS, you'll want libevent 1.1 or higher to deal with a kqueue bug. Also, be warned that the -k (mlockall) option to memcached might be dangerous when using a large cache. Just make sure the memcached machines don't swap. memcached does non-blocking network I/O, but not disk. (it should never go to disk, or you've lost the whole point of it) The memcached website is at: http://www.danga.com/memcached/







