Dead connections aren't removed from pool in java memcached client?
Eli Bingham
eli at pandora.com
Mon Aug 6 17:08:45 UTC 2007
Hey memcached folks,
We've encountered an odd production issue with the java memcached
client. This is occuring in a memcached cluster of 30 nodes running
server version 1.2.1, with java client version 1.5.1. I realize
neither of these are the latest and greatest versions of the
respective software, but I see nothing as of yet in the change logs
to indicate that our problem would be solved by upgrading.
The issue is that when one or more server nodes go down and then
later come back up, dead connections seem to persist in the client
connection pools for an indefinite period. We are aware of this
because we can see the memcached client SockIOPool class logging the
following error on some percentage of incoming requests (where "foo"
is just the output of the socket's toString method and "bar" is the
host).
++++ socket in avail pool is not connected: foo for host: bar
The errors seem to (very very) slowly decrease over time, but a lot
of them persist after 24 hours and the only remedy is to restart the
application JVMs running the memcached client. Note that while this
error is occuring, the memcached node that died and then restarted
seems to be getting a relatively normal volume of traffic.
These are the settings we currently use on SockIOPool:
pool.setMinConn(5);
pool.setMaxConn(50);
pool.setInitConn(5);
pool.setSocketTO(1000);
pool.setSocketConnectTO(100);
pool.setFailover(false);
pool.setFailback(true);
pool.setAliveCheck(false);
Any help would be greatly appreciated.
Eli Bingham
Senior Engineer
Pandora Media, Inc.
More information about the memcached
mailing list