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 정보; 머리를 설정.
2014-01-28 11 : 04 : 52.933 WARN net.spy.memcached.MemcachedConnection : q : unittest : scannedemails : w에 대한 기본 노드를 다시 시도하여 다른 노드에 재배포 할 수 없습니다.
28 11 : 04 : 52.933 정보; 머리를 설정하십시오. 증분.
2014-01-28 11 : 04 : 52.935 WARN net.spy.memcached.MemcachedConnection : q : unittest : scannedemails : w에 대한 기본 노드를 다시 시도하여 다른 노드에 재배포 할 수 없습니다.
에 실패 testMemc net.spy.memcached.OperationTimeoutException : net.spy.memcached.MemcachedClient.mutate (MemcachedClient.java에서
돌연변이 동작은 카운터를 수정할 수없는 [w : 유닛 테스트 : scannedemails Q]를 초과 : 1484) net.spy.memcached.MemcachedClient.incr (MemcachedClient.java:1529) me.unroll.emailroller.ActOnScanResultsTest.testMemc에서
(ActOnScanResultsTest.java:295)에서
의 대부분을 내 이런 종류의 실수에 대한 직감은 나를 여기에서 실패하게한다. 다음은 모두 이상합니다.
- 왜 항상 정확히 한 번 설정에 실패합니까?
- 왜 세트에서 성공한 것처럼 보인 후에 계속 증가하지 못합니까?
로드가 많은 서버에서 테스트를 실행하는 것은 약간 잘못되었지만 이와 같은 문제가 발생하면 이점이 있습니다. 이 일관된 실패의 원인은 무엇입니까? 하나의 노드 만 있습니다.