2016-09-14 77 views
0

我有一个包含6个服务器和1个客户端节点的群集。我的客户端节点会进行大量更新并创建作业,并且还有一个过期策略以捕获过期的项目。一段时间后Apache Ignite缓存冻结

但是,每天,集群至少冻结一次。即使在通话过程中ignitevisor的缓存命令也会冻结。

所以我一直看着线程转储,我看到了一个奇怪的事情是,有一大把相同的语句是这样的:

"pub-#39%null%" #51 prio=5 os_prio=0 tid=0x00007f9788623800 nid=0x1d02 waiting on condition [0x00007f9769ddc000] 
    java.lang.Thread.State: WAITING (parking) 
    at sun.misc.Unsafe.park(Native Method) 
    - parking to wait for <0x00000006c004aaa8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) 

所以有大量的等待状态的线程,但是好像从来没有发生。

我的缓存配置是这样的:

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd"> 
    <!-- 
     Alter configuration below as needed. 
    --> 
    <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"> 

     <!-- Configure internal thread pool. --> 
      <property name="publicThreadPoolSize" value="64"/> 

     <!-- Configure system thread pool. --> 
      <property name="systemThreadPoolSize" value="32"/> 

       <property name="discoverySpi"> 
         <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> 
           <property name="ipFinder"> 
             <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder"> 
               <property name="addresses"> 
                 <list> 
                   ... 
                 </list> 
               </property> 
             </bean> 
           </property> 
         </bean> 
       </property> 
     <property name="cacheConfiguration"> 
      <list> 
       <bean class="org.apache.ignite.configuration.CacheConfiguration"> 
        <property name="name" value="asd1"/> 
        <property name="eagerTtl" value="true"/> 
        <property name="expiryPolicyFactory"> 
         <bean class="javax.cache.configuration.FactoryBuilder.SingletonFactory"> 
          <constructor-arg name="instance"> 
           <bean class="javax.cache.expiry.TouchedExpiryPolicy"> 
            <constructor-arg name="expiryDuration"> 
             <bean class="javax.cache.expiry.Duration"> 
              <constructor-arg name="timeUnit"> 
               <value type="java.util.concurrent.TimeUnit">MILLISECONDS</value> 
              </constructor-arg> 
              <constructor-arg name="durationAmount" value="10800000"/> 
             </bean> 
            </constructor-arg> 
           </bean> 
          </constructor-arg> 
         </bean> 
        </property> 
       </bean> 
       <bean class="org.apache.ignite.configuration.CacheConfiguration"> 
        <property name="name" value="asd2"/> 
        <property name="eagerTtl" value="true"/> 
        <property name="expiryPolicyFactory"> 
         <bean class="javax.cache.configuration.FactoryBuilder.SingletonFactory"> 
          <constructor-arg name="instance"> 
           <bean class="javax.cache.expiry.TouchedExpiryPolicy"> 
            <constructor-arg name="expiryDuration"> 
             <bean class="javax.cache.expiry.Duration"> 
              <constructor-arg name="timeUnit"> 
               <value type="java.util.concurrent.TimeUnit">MILLISECONDS</value> 
              </constructor-arg> 
              <constructor-arg name="durationAmount" value="86400000"/> 
             </bean> 
            </constructor-arg> 
           </bean> 
          </constructor-arg> 
         </bean> 
        </property> 
       </bean> 
      </list> 
     </property> 
     <property name="includeEventTypes" value="70"/> 

    </bean> 

</beans> 

我真的需要帮助这里。 THX

回答

相关问题