I am trying to take an Ignite cluster to production but so far we have hit a
lot of performance issues and are in the process of tuning configurations.

Use case: Our application uses the JdbcThinClient to create temporary tables
that hold partial results. We then join all those tables into one 'final
table' and delete all temporary tables. All tables are kept off-heap, in a
dataRegion.

When under load, Ignite starts being really slow to execute simple INSERT
and DROP TABLE statements, sometimes taking <10 seconds. We never see any
memory issues, which makes sense because most tables have a very small
number of rows. Cpu utilization also seems to not be a problem. 
We do see that Ignite takes a lot of time to exchange partition information
between nodes, sometimes >4 seconds.

My setting is as follows:

Cluster: 4 nodes with 4 cores and 16GB RAM each
Version:  Ignite 2.8.0
Heap: -Xms6g -Xmx6g 
Persistence is disabled.

Config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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";>

  <bean id="grid.cfg"
class="org.apache.ignite.configuration.IgniteConfiguration">

    <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>
                
                <value>10.35.2.21</value>
                <value>10.35.2.22</value>
                <value>10.35.2.23</value>
                <value>10.35.2.24</value>
              </list>
            </property>
          </bean>
        </property>
      </bean>
    </property>

    
    <property name="dataStorageConfiguration">
      <bean
class="org.apache.ignite.configuration.DataStorageConfiguration">
        <property name="defaultDataRegionConfiguration">
          <bean
class="org.apache.ignite.configuration.DataRegionConfiguration">
            <property name="name" value="Default_Cache_Region"/>
            <property name="initialSize" value="#{100L * 1024 * 1024}"/>
            <property name="maxSize" value="#{6L * 1024 * 1024 * 1024}"/>
            <property name="persistenceEnabled" value="false"/>
          </bean>
        </property>
      </bean>
    </property>

    <property name="cacheConfiguration">
      <list>
        
        <bean id="cache-template-bean" abstract="true"
class="org.apache.ignite.configuration.CacheConfiguration">
          <property name="name" value="table_cache_template*"/>
          <property name="sqlSchema" value="PUBLIC"/>
          <property name="dataRegionName" value="Default_Cache_Region"/>
          <property name="groupName" value="default_group"/>
          <property name="eventsDisabled" value="true"/>
          <property name="backups" value="0"/>
          <property name="expiryPolicyFactory">
            <bean class="javax.cache.expiry.ModifiedExpiryPolicy"
factory-method="factoryOf">
              <constructor-arg>
                <bean class="javax.cache.expiry.Duration">
                  <constructor-arg value="MINUTES"/>
                  <constructor-arg value="6"/>
                </bean>
              </constructor-arg>
            </bean>
          </property>
        </bean>

        
        <bean id="cache-template-bean2" abstract="true"
class="org.apache.ignite.configuration.CacheConfiguration">
          <property name="name" value="debug*"/>
          <property name="sqlSchema" value="PUBLIC"/>
          <property name="dataRegionName" value="Default_Cache_Region"/>
          <property name="groupName" value="debug_group"/>
          <property name="eventsDisabled" value="true"/>
          <property name="backups" value="0"/>
        </bean>

      </list>
    </property>
  </bean>
</beans>

We tried to set 'groupName' to put all tables under the same cacheGroup, but
this setting appears to not be taking effect, because when I inspect the
caches with the *control.sh* script is shows that all caches (except for
system caches) have grpName=null and all have distinct grId, which matches
their cacheId. Does this setting not work with cache templates? I've also
tried setting it in the CREATE TABLE statement, but still no effect.

Would appreciate some insight into how to best configure ignite for this use
case.

Thanks in advance,
João Gonçalves




--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to