2014-09-11 3 views
1

hazelcast v3.2.4 클라이언트와 서버를 사용하고 있습니다. 서버가 데이터베이스의 데이터를로드합니다.이 문제는 데이터가 적 으면 발생하지 않으므로 관련 데이터 크기를 추측하고 있지만 확인해야합니다. 테스트를 위해 서버에 두 개의 노드가 있습니다. 문제가 있음을 알게되면 더 추가 할 수 있습니다. 내 hazelcast 맵에 사용하는 맵 구성은 아래에 나와 있습니다. 어떻게 든 맵을 잘못 구성했는지 확실하지 않습니다. 클라이언트와 서버의 오류는 다음과 같습니다. 노드에서의 GC 또는 단순히 너무 많은 데이터가 (단순 상단 체크 불구하고 35 % 미만의 메모리 사용량을 보여줍니다 - 곧 jvisualvm 사용하여 확인합니다) 있는지 확실하지 않다 클라이언트에hazelcast를 사용할 때 맵이 준비되지 않았습니다.

오류를

Exception in thread "main" com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
    at com.hazelcast.map.DefaultRecordStore.checkIfLoaded(DefaultRecordStore.java:138) 
    at com.hazelcast.map.operation.MapSizeOperation.run(MapSizeOperation.java:36) 
    at com.hazelcast.spi.impl.BasicOperationService.processOperation(BasicOperationService.java:363) 
    at com.hazelcast.spi.impl.BasicOperationService.processPacket(BasicOperationService.java:309) 
    at com.hazelcast.spi.impl.BasicOperationService.access$400(BasicOperationService.java:102) 
    at com.hazelcast.spi.impl.BasicOperationService$BasicOperationProcessorImpl.process(BasicOperationService.java:766) 
    at com.hazelcast.spi.impl.BasicOperationScheduler$PartitionThread.process(BasicOperationScheduler.java:276) 
    at com.hazelcast.spi.impl.BasicOperationScheduler$PartitionThread.doRun(BasicOperationScheduler.java:270) 
    at com.hazelcast.spi.impl.BasicOperationScheduler$PartitionThread.run(BasicOperationScheduler.java:245) 
    at ------ End remote and begin local stack-trace ------.(Unknown Source) 
    at com.hazelcast.spi.impl.BasicInvocation$InvocationFuture.resolveResponse(BasicInvocation.java:862) 
    at com.hazelcast.spi.impl.BasicInvocation$InvocationFuture.resolveResponseOrThrowException(BasicInvocation.java:795) 
    at com.hazelcast.spi.impl.BasicInvocation$InvocationFuture.get(BasicInvocation.java:698) 
    at com.hazelcast.spi.impl.BasicInvocation$InvocationFuture.get(BasicInvocation.java:676) 
    at com.hazelcast.spi.impl.BasicOperationService.invokeOnPartitions(BasicOperationService.java:623) 
    at com.hazelcast.spi.impl.BasicOperationService.invokeOnAllPartitions(BasicOperationService.java:549) 
    at com.hazelcast.client.ClientEngineImpl.invokeOnAllPartitions(ClientEngineImpl.java:175) 
    at com.hazelcast.client.AllPartitionsClientRequest.process(AllPartitionsClientRequest.java:29) 
    at com.hazelcast.client.ClientEngineImpl$ClientPacketProcessor.processRequest(ClientEngineImpl.java:499) 
    at com.hazelcast.client.ClientEngineImpl$ClientPacketProcessor.run(ClientEngineImpl.java:446) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at com.hazelcast.util.executor.PoolExecutorThreadFactory$ManagedThread.run(PoolExecutorThreadFactory.java:59) 

서버

2014-09-11 11:37:54,525 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.response] [xxx.xxx.xxx.xxx]:5701 [testApp] [3.2.4] Retrying invocation: BasicInvocation{ serviceName='hz:impl:mapService', [email protected], partitionId=42, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=240, callTimeout=60000, target=Address[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
2014-09-11 11:37:54,525 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.response] [xxx.xxx.xxx.xxx]:5701 [testApp] [3.2.4] Retrying invocation: BasicInvocation{ serviceName='hz:impl:mapService', [email protected], partitionId=51, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=240, callTimeout=60000, target=Address[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
2014-09-11 11:37:54,525 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.response] [xxx.xxx.xxx.xxx]:5701 [testApp] [3.2.4] Retrying invocation: BasicInvocation{ serviceName='hz:impl:mapService', [email protected], partitionId=40, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=240, callTimeout=60000, target=Address[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
2014-09-11 11:37:54,525 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.response] [xxx.xxx.xxx.xxx]:5701 [testApp] [3.2.4] Retrying invocation: BasicInvocation{ serviceName='hz:impl:mapService', [email protected], partitionId=44, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=240, callTimeout=60000, target=Address[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
2014-09-11 11:37:54,525 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.response] [xxx.xxx.xxx.xxx]:5701 [testApp] [3.2.4] Retrying invocation: BasicInvocation{ serviceName='hz:impl:mapService', [email protected], partitionId=48, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=240, callTimeout=60000, target=Address[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
2014-09-11 11:37:54,526 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.response] [xxx.xxx.xxx.xxx]:5701 [testApp] [3.2.4] Retrying invocation: BasicInvocation{ serviceName='hz:impl:mapService', [email protected], partitionId=53, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=240, callTimeout=60000, target=Address[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
2014-09-11 11:37:54,526 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.response] [xxx.xxx.xxx.xxx]:5701 [testApp] [3.2.4] Retrying invocation: BasicInvocation{ serviceName='hz:impl:mapService', [email protected], partitionId=46, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=240, callTimeout=60000, target=Address[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
2014-09-11 11:37:54,526 WARN c.h.s.i.BasicInvocation [hz._hzInstance_1_testApp.response] [xxx.xxx.xxx.xxx]:5701 [testApp] [3.2.4] Retrying invocation: BasicInvocation{ serviceName='hz:impl:mapService', [email protected], partitionId=55, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=240, callTimeout=60000, target=Address[192.168.110.159]:5701}, Reason: com.hazelcast.spi.exception.RetryableHazelcastException: Map is not ready!!! 
2014-09-11 11:37:54,526 WARN c.h. 

    <map name="testMap"> 
     <in-memory-format>BINARY</in-memory-format> 
     <backup-count>0</backup-count> 
     <async-backup-count>1</async-backup-count> 
     <time-to-live-seconds>0</time-to-live-seconds> 
     <max-idle-seconds>0</max-idle-seconds> 
     <eviction-policy>LRU</eviction-policy> 
     <max-size policy="PER_NODE">0</max-size> 
     <eviction-percentage>25</eviction-percentage> 
     <initial-load-mode>EAGER</initial-load-mode> 
     <map-store enabled="true"> 
      <class-name>models.hazelcast.storeload.TestStoreLoad</class-name> 
      <write-delay-seconds>0</write-delay-seconds> 
     </map-store> 
     <entry-listeners> 
      <entry-listener include-value="true" local="false">models.hazelcast.listeners.TestListener</entry-listener> 
     </entry-listeners> 

     <merge-policy>com.hazelcast.map.merge.PassThroughMergePolicy</merge-policy> 
    </map> 

답변

0

있는지 확인하십시오 당신은 희망 디버그에 다음과 모두 해결합니까

,
    서버
  1. 실행 jstatd의 hazelcast 서버가 실행되고 (예를 들어) jstatd의 -J-Djava.security.policy =를 jstatd.all.policy -J-Djava.rmi.server.hostname = xxx.xxx.xxx .xxx

그런 다음 jvisualvm을 연결하여 서버 응용 프로그램의 상태를 파악하십시오. 프로세스에 대한 기본 정보를 보려면 top을 사용할 수도 있습니다.

  1. Java 프로세스를 시작하는 방법을 공유하십시오. 서버에서 사용할 수있는 메모리 양. g 용자가 지정하는 java 프로세스의 Xms 및 Xmx 값은 + y입니까?

  2. 간단히 step2를 변경해도 문제가 해결되지 않으면 G1GC를 사용해보십시오.

  3. steps2 및 steps3이 작동하지 않으면 서버 클러스터에 서버를 추가하십시오.

  4. 서버를 실행하거나 잠시 동안 실행 한 후에 이러한 현상이 발생합니까? 응용 프로그램의 작동 방식에 따라 메모리 사용이 변경됩니까?

+0

나는 XMS와 Xmx를 증가 시켰을뿐만 아니라 G1GC로 전환했고이 문제는 사라진 것으로 보인다. TOP는 거의 90 %의 메모리 사용량을 보여줍니다. 따라서 메모리 내 데이터를 줄이거 나 노드를 더 추가해야합니다. –

관련 문제