我在memcached中遇到了奇怪的行为,特别是在其一致性方面很奇怪的行为。这是我的测试:
@Test
public void testMemc() {
logger.info("Setting head.");
memc.set(env.memcachedQueueKeys().head, 3600, 0);
logger.info("Set head; incrementing.");
memc.incr(env.memcachedQueueKeys().head, 1);
logger.info("Incremented.");
}
这是输出:
28 11:04:52.932 INFO;设置头。
2014-01-28 11:04:52.933 WARN net.spy.memcached.MemcachedConnection:无法重新分发到另一个节点,为q重试主节点:unittest:scannedemails:w。
28 11:04:52.933 INFO;设置头;递增。
2014-01-28 11:04:52.935 WARN net.spy.memcached.MemcachedConnection:无法重新分发到另一个节点,为q重试主节点:unittest:scannedemails:w。
失败:testMemc net.spy.memcached.OperationTimeoutException:变量操作超时,无法修改计数器[q:unittest:scannedemails:w]
在net.spy.memcached.MemcachedClient.mutate(MemcachedClient.java:1484)
在net.spy.memcached.MemcachedClient.incr(MemcachedClient.java:1529)
at me.unroll.emailroller.ActOnScanResultsTest.testMemc(ActOnScanResultsTest.java:295)
我对这种错误的大部分直觉都让我失败了。以下事情都很奇怪:
这是在高负载服务器上(是的,在承载服务器上运行测试有点不对,但如果遇到这样的问题,至少有一些优势)。什么可以导致这种一致的失败?只有一个节点。
答案 0 :(得分:1)
问题是我无法连接 。这是spymemcached中的一个错误,因为set
操作没有抛出异常,即使它没有memcached服务器来执行set
。