2016-09-14 73 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

回答

相關問題