We are seeing timeouts under high load using spymemcached 2.7.3 and memcached 1.4.4:
net.spy.memcached.OperationTimeoutException: Timeout waiting for value at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1185) at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1200)
java.lang.RuntimeException: Exception waiting for value at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1183) at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1200)
Here is my connection factory:
"Failure Mode: Redistribute, Hash Algorithm: NATIVE_HASH Max Reconnect Delay: 30, Max Op Timeout: 2500, Op Queue Length: 16384, Op Max Queue Block Time10000, Max Timeout Exception Threshold: 998, Read Buffer Size: 16384, Transcoder: net.spy.memcached.transcoders.SerializingTranscoder@90dae16, Operation Factory: net.spy.memcached.protocol.binary.BinaryOperationFactory@61202afe isDaemon: false, Optimized: true, Using Nagle: false, ConnectionFactory: DefaultConnectionFactory"
Everything is using the defaults except I am using binary connection and consistent hashing.
Out of several million requests only a dozen or so timeout, but we are storing a cache "version" key in memcached and fetching that before we fetch the requested key. Since the version key does not get fetched it effectively clears all our cache..and at peak times nonetheless.
Is there any tuning I can do to avoid seeing these timeouts?