Apache Ignite: очередь StripedExecutor и производительность резервного копирования - PullRequest
1 голос
/ 12 марта 2019

У нас есть кластер (Ignite v2.7) с 2 узлами данных и распределенным кешем.

Мы загрузили данные в этот кеш и начали массовую операцию чтения / записи. Кластер работает отлично. Согласно JMX очередь StripedExecutor пуста.

Мы включили резервное копирование в этот кеш, загрузили данные в этот кеш и начали массовую операцию чтения / записи. Согласно JMX, очередь StripedExecutor постоянно растет на одном узле. Потоки sys-stripe потребляют процессор, но StripedExecutor работает медленно.

Мы используем три вида операций чтения:

  1. распределенный sql от клиентского узла, выберите форму xxx, где ...

  2. включить вычисления на клиентском узле,
    Коллекция offerSearchResults = ignite.compute (ignite.cluster (). ForServers ()). Broadcast (new GetProductOfferJob (), computeTaskData); GetProductOfferJob использует cache.get

  3. возле кеша с клиентского узла cache.get

Это ошибка в резервных копиях?

Конфигурация области данных:

<property name="dataStorageConfiguration">
        <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
            <property name="systemRegionInitialSize" value="#{100 * 1024 * 1024}"/>
            <property name="pageSize" value="16384"/>
            <property name="walMode" value="LOG_ONLY"/>
            <property name="writeThrottlingEnabled" value="true"/>
            <property name="dataRegionConfigurations">
                <list>
                    <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
                        <property name="name" value="default_data_region"/>
                        <property name="initialSize" value="#{10L * 1024 * 1024 * 1024}"/>
                        <property name="maxSize" value="#{50L * 1024 * 1024 * 1024}"/>
                        <property name="metricsEnabled" value="false"/>
                        <property name="persistenceEnabled" value="true"/>
                    </bean>
                </list>
            </property>                
        </bean>
    </property>

Конфигурация кэша:

<bean class="org.apache.ignite.configuration.CacheConfiguration">
    <property name="name" value="ATTR_VALUE"/>
    <property name="dataRegionName" value="default_data_region"/>
    <property name="cacheMode" value="PARTITIONED"/>
    <property name="backups" value="1"/>    
    <property name="sqlSchema" value="ATTR_VALUE"/>
    <property name="onheapCacheEnabled" value="true"/>
    <property name="copyOnRead" value="false"/>
    <property name="keyConfiguration">
        <bean class="org.apache.ignite.cache.CacheKeyConfiguration">
            <property name="typeName" value="entity.key.AttributeValueKey"/>
            <property name="affinityKeyFieldName" value="segId"/>
        </bean>
    </property>
    <property name="queryEntities">
        <list>
            <bean class="org.apache.ignite.cache.QueryEntity">
                <property name="keyType" value="entity.key.AttributeValueKey"/>
                <property name="valueType" value="entity.AttributeValue"/>
                <property name="fields">
                    <map>
                        <entry key="segId" value="java.lang.String"/>
                        <entry key="value" value="java.lang.String"/>
                        <entry key="attrId" value="java.lang.Long"/>
                        <entry key="entityObjectId" value="java.lang.Integer"/>
                    </map>
                </property>
                <property name="keyFields">
                    <set>
                        <value>segId</value>
                        <value>value</value>
                        <value>attrId</value>
                        <value>entityObjectId</value>
                    </set>
                </property>
            </bean>
        </list>
    </property>
</bean>

1 Ответ

0 голосов
/ 15 марта 2019

Когда вы включили резервные копии в кеше, вы удвоили объем нагрузки в кластере.

При 0 резервных копиях каждая запись - это одна операция на одном узле.

С1 резервное копирование каждой записи - это две операции - по одной на каждом узле.

При удвоенной нагрузке кластер, похоже, задохнулся.Я предполагаю, что вам нужно добавить несколько узлов для обработки этого количества нагрузки.

...