2011-11-04 2 views
2

최대 절전 모드 검색 백엔드로 사용되는 10 노드 Infinispan 클러스터로 작업하고 있습니다. 우리 서버는 Java 1.6_24에서 TC 서버 2.5 (tomcat 6.0.32)를 실행 중입니다. 각 노드의 클러스터 캐시 쓰기 및 멀티 캐스트 UDP 전송을 처리하기 위해 jGroups 2.12.1.3을 사용하고 있습니다.Infinispan의 복제 시간 초과

우리 클러스터에서 3 개 이상의 노드를 시작할 때 결국 노드 중 하나가 복제 시간 초과를 기록하기 시작합니다. 복제를 위해 Infinispan을 구성 하던지 분산 캐시 모드를 구성하든 같은 결과가 나타났습니다. 나머지 클러스터는 안정적이지만 장애가 발생한 노드는 본질적으로 검색 할 수 없게됩니다.

우리의 구성 :

Infinispan :

<?xml version="1.0" encoding="UTF-8"?> 
<infinispan 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="urn:infinispan:config:5.0 http://www.infinispan.org/schemas/infinispan-config-5.0.xsd" 
    xmlns="urn:infinispan:config:5.0"> 
<global> 
    <globalJmxStatistics 
     enabled="true" 
     cacheManagerName="HibernateSearch" 
     allowDuplicateDomains="true" /> 
    <transport 
     clusterName="HibernateSearch-Infinispan-cluster-MT" 
     distributedSyncTimeout="50000"> 
     <properties> 
      <property name="configurationFile" value="infinispan-udp.cfg.xml" /> 
     </properties> 
    </transport> 
    <shutdown 
     hookBehavior="DONT_REGISTER" /> 
</global> 


<default> 
    <locking 
     lockAcquisitionTimeout="20000" 
     writeSkewCheck="false" 
     concurrencyLevel="5000" 
     useLockStriping="false" /> 
    <storeAsBinary storeKeysAsBinary="false" storeValuesAsBinary="true" 
     enabled="false" /> 
    <invocationBatching 
     enabled="true" /> 
    <clustering 
     mode="replication"> 
     <stateRetrieval 
      timeout="60000" 
      logFlushTimeout="65000" 
      fetchInMemoryState="true" 
      alwaysProvideInMemoryState="true" /> 
     <sync 
      replTimeout="50000" /> 
     <l1 enabled="false" /> 
    </clustering> 
    <jmxStatistics 
     enabled="true" /> 
    <eviction 
     maxEntries="-1" 
     strategy="NONE" /> 
    <expiration 
     maxIdle="-1" /> 
</default> 


<namedCache 
    name="LuceneIndexesMetadata"> 
    <clustering 
     mode="replication"> 
     <stateRetrieval 
      fetchInMemoryState="true" 
      logFlushTimeout="30000" /> 
     <sync 
      replTimeout="50000" /> 
     <l1 enabled="false" /> 
    </clustering> 
    <locking 
     lockAcquisitionTimeout="20000" 
     writeSkewCheck="false" 
     concurrencyLevel="5000" 
     useLockStriping="false" /> 
    <loaders shared="true" preload="true"> 
     <loader class="org.infinispan.loaders.jdbm.JdbmCacheStore" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false"> 
      <properties> 
       <property name="location" value="/usr/local/tc/.index/metadata" /> 
      </properties> 
     </loader> 
    </loaders> 
</namedCache> 
<namedCache 
    name="LuceneIndexesData"> 
    <clustering 
     mode="replication"> 
     <stateRetrieval 
      fetchInMemoryState="true" 
      logFlushTimeout="30000" /> 
     <sync 
      replTimeout="50000" /> 
     <l1 enabled="false" /> 
    </clustering> 
    <locking 
     lockAcquisitionTimeout="20000" 
     writeSkewCheck="false" 
     concurrencyLevel="5000" 
     useLockStriping="false" /> 
    <loaders shared="true" preload="true"> 
     <loader class="org.infinispan.loaders.jdbm.JdbmCacheStore" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false"> 
      <properties> 
       <property name="location" value="/usr/local/tc/.index/data" /> 
      </properties> 
     </loader> 
    </loaders> 
</namedCache> 
<namedCache 
    name="LuceneIndexesLocking"> 
    <clustering 
     mode="replication"> 
     <stateRetrieval 
      fetchInMemoryState="true" 
      logFlushTimeout="30000" /> 
     <sync 
      replTimeout="50000" /> 
     <l1 enabled="false" /> 
    </clustering> 
    <locking 
     lockAcquisitionTimeout="20000" 
     writeSkewCheck="false" 
     concurrencyLevel="5000" 
     useLockStriping="false" /> 
</namedCache> 

위해 JGroups (UDP) :

<config xmlns="urn:org:jgroups" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-2.12.xsd"> 
<UDP 
    mcast_addr="${jgroups.udp.mcast_addr:228.10.10.9}" 
    mcast_port="${jgroups.udp.mcast_port:45599}" 
    tos="8" 
    ucast_recv_buf_size="20000000" 
    ucast_send_buf_size="640000" 
    mcast_recv_buf_size="25000000" 
    mcast_send_buf_size="640000" 
    loopback="true" 
    discard_incompatible_packets="true" 
    max_bundle_size="64000" 
    max_bundle_timeout="30" 
    ip_ttl="${jgroups.udp.ip_ttl:2}" 
    enable_bundling="true" 
    enable_diagnostics="false" 
    thread_naming_pattern="pl" 
    thread_pool.enabled="true" 
    thread_pool.min_threads="2" 
    thread_pool.max_threads="30" 
    thread_pool.keep_alive_time="5000" 
    thread_pool.queue_enabled="false" 
    thread_pool.queue_max_size="100" 
    thread_pool.rejection_policy="Discard" 
    oob_thread_pool.enabled="true" 
    oob_thread_pool.min_threads="2" 
    oob_thread_pool.max_threads="30" 
    oob_thread_pool.keep_alive_time="5000" 
    oob_thread_pool.queue_enabled="false" 
    oob_thread_pool.queue_max_size="100" 
    oob_thread_pool.rejection_policy="Discard" 
    /> 

,363,210

그리고이 오류는 우리가 관찰 :이 오류에 관계없이 우리의 토폴로지 또는 캐싱 모드의 스며

10-31-2011 13:53:02 ERROR Hibernate Search: Directory writer-3 interceptors.InvocationContextInterceptor: ISPN000136: Execution error 
org.infinispan.util.concurrent.TimeoutException: Replication timeout for tc-cluster-0105-21082 
      at org.infinispan.remoting.transport.AbstractTransport.parseResponseAndAddToResponseList(AbstractTransport.java:71) 
      at org.infinispan.remoting.transport.jgroups.JGroupsTransport.invokeRemotely(JGroupsTransport.java:452) 
      at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:132) 
      at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:156) 
      at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:265) 
      at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:252) 
      at org.infinispan.remoting.rpc.RpcManagerImpl.broadcastRpcCommand(RpcManagerImpl.java:235) 
      at org.infinispan.remoting.rpc.RpcManagerImpl.broadcastRpcCommand(RpcManagerImpl.java:228) 
      at org.infinispan.interceptors.ReplicationInterceptor.handleCrudMethod(ReplicationInterceptor.java:116) 
      at org.infinispan.interceptors.ReplicationInterceptor.visitPutKeyValueCommand(ReplicationInterceptor.java:79) 
      at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) 
      at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119) 
      at org.infinispan.interceptors.LockingInterceptor.visitPutKeyValueCommand(LockingInterceptor.java:294) 
      at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) 
      at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119) 
      at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:133) 
      at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:60) 
      at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) 
      at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119) 
      at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:214) 
      at org.infinispan.interceptors.TxInterceptor.visitPutKeyValueCommand(TxInterceptor.java:162) 
      at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) 
      at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119) 
      at org.infinispan.interceptors.CacheMgmtInterceptor.visitPutKeyValueCommand(CacheMgmtInterceptor.java:114) 
      at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) 
      at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119) 
      at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:104) 
      at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:64) 
      at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:60) 
      at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) 
      at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:119) 
      at org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.java:77) 
      at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:60) 
      at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) 
      at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:274) 
      at org.infinispan.CacheImpl.putIfAbsent(CacheImpl.java:524) 
      at org.infinispan.CacheSupport.putIfAbsent(CacheSupport.java:74) 
      at org.infinispan.lucene.locking.BaseLuceneLock.obtain(BaseLuceneLock.java:65) 
      at org.apache.lucene.store.Lock.obtain(Lock.java:72) 
      at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:1097) 
      at org.hibernate.search.backend.Workspace.createNewIndexWriter(Workspace.java:202) 
      at org.hibernate.search.backend.Workspace.getIndexWriter(Workspace.java:180) 
      at org.hibernate.search.backend.impl.lucene.PerDPQueueProcessor.run(PerDPQueueProcessor.java:103) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
      at java.lang.Thread.run(Thread.java:662) 

때문에, 우리는 우리가 어딘가 잘못해야한다 생각합니다. 누구든지 수정 프로그램을 추천 할 수 있습니까?

+0

이것은 http://community.jboss.org/message/635103의 복제본입니까? –

+0

네 ... 가능한 한 넓은 그물을 주조하십시오. –

답변

2

Infinispan과 Hibernate Search간에 버전 충돌이있었습니다. 최대 절전 모드 검색 3.4.1을 사용하는 경우 Infinispan 4.2.1을 사용해야하며 이후 버전은 작동하지 않을 수 있습니다.