You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by "aaron@tophold.com" <aa...@tophold.com> on 2017/08/02 12:44:07 UTC

How the Ignite Service performance? When we test the CPU soon be occupied 100%

hi All, 

we use Ignite as the remote service; when we do test, try to issue ~100 request/Second to remote service. soon the CPU increase to 100%.

And then client timeout.  from the Profiler we can find the svc thread consumer most of the time.  instances are deployed on same machine, so the network should be the issue. 

The receiver side will execute request in separated thread, and very straightforward,  no high GC watched.  






client get service as: timeout is 4000

service = ignite.services(ignite
        .cluster()
        .forPredicate(new CommandServiceNodeFilter(identify)))
        .serviceProxy(identify, CommandService.class, true, DEF_SVC_TIMEOUT);

Binary configuration as:

BinaryConfiguration binaryConfiguration = new BinaryConfiguration();
binaryConfiguration.setNameMapper(new BinaryBasicNameMapper(false));
binaryConfiguration.setIdMapper(new BinaryBasicIdMapper(true));
binaryConfiguration.setTypeConfigurations(typeConfigurations);
binaryConfiguration.setSerializer(new BinaryReflectiveSerializer());
cfg.setBinaryConfiguration(binaryConfiguration);
JVM arg:

-Xms4g
-Xmx4g
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=D:\data\memory
-XX:+AggressiveOpts
-Djava.net.preferIPv4Stack=true
-XX:MaxMetaspaceSize=256m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=20
-XX:InitiatingHeapOccupancyPercent=35
-XX:+DisableExplicitGC
-Djava.awt.headless=true
-DFIND_STRATEGY=jdbc
-DIGNITE_THREAD_DUMP_ON_EXCHANGE_TIMEOUT=true
-Duser.timezone=UTC
-Djava.net.preferIPv4Stack=true
-Dapp.instance.cnt=1500280690_12361
-Dapp.instance=booker
-Dapp.env=dev
-Dapp.user=th_dev
-Dtemp.dir=/var/tmp/
-DMEM_POLICY=mini


Thanks for your time!!! very appriciated!

Regards
Aaron


aaron@tophold.com

Re: Re: How the Ignite Service performance? When we test the CPU soon be occupied 100%

Posted by "aaron@tophold.com" <aa...@tophold.com>.
hi Andrey, 

Thanks, we have SQL , but almost no query should happen, all update base on ignite cache;

Those entry received will use cache storage to write behind,  hundred command may product about 4~5 times other entries need persist also. 

All the reference data in fact pre-load to cache use the data streamer. the cache config as:

<property name="cacheMode" value="REPLICATED"/>
<property name="atomicityMode" value="ATOMIC"/>
<property name="readFromBackup" value="true"/>
<property name="readThrough" value="true"/>

<property name="writeThrough" value="true"/>
<property name="writeBehindEnabled" value="true"/>
<property name="writeBehindBatchSize" value="2048"/>

<property name="storeKeepBinary" value="true"/>
<property name="onheapCacheEnabled" value="false"/>
<property name="copyOnRead" value="false"/>
<property name="memoryPolicyName" value="Trans_Region"/>

Thanks again for your time

Regards
Aaron


aaron@tophold.com
 
From: Andrey Mashenkov
Date: 2017-08-03 22:10
To: user
Subject: Re: How the Ignite Service performance? When we test the CPU soon be occupied 100%
Hi,

Looks like a heavy SQL query run on grid. 
Does you service run SQL queries?

On Wed, Aug 2, 2017 at 3:44 PM, aaron@tophold.com <aa...@tophold.com> wrote:
hi All, 

we use Ignite as the remote service; when we do test, try to issue ~100 request/Second to remote service. soon the CPU increase to 100%.

And then client timeout.  from the Profiler we can find the svc thread consumer most of the time.  instances are deployed on same machine, so the network should be the issue. 

The receiver side will execute request in separated thread, and very straightforward,  no high GC watched.  






client get service as: timeout is 4000

service = ignite.services(ignite
        .cluster()
        .forPredicate(new CommandServiceNodeFilter(identify)))
        .serviceProxy(identify, CommandService.class, true, DEF_SVC_TIMEOUT);

Binary configuration as:

BinaryConfiguration binaryConfiguration = new BinaryConfiguration();
binaryConfiguration.setNameMapper(new BinaryBasicNameMapper(false));
binaryConfiguration.setIdMapper(new BinaryBasicIdMapper(true));
binaryConfiguration.setTypeConfigurations(typeConfigurations);
binaryConfiguration.setSerializer(new BinaryReflectiveSerializer());
cfg.setBinaryConfiguration(binaryConfiguration);
JVM arg:

-Xms4g
-Xmx4g
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=D:\data\memory
-XX:+AggressiveOpts
-Djava.net.preferIPv4Stack=true
-XX:MaxMetaspaceSize=256m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=20
-XX:InitiatingHeapOccupancyPercent=35
-XX:+DisableExplicitGC
-Djava.awt.headless=true
-DFIND_STRATEGY=jdbc
-DIGNITE_THREAD_DUMP_ON_EXCHANGE_TIMEOUT=true
-Duser.timezone=UTC
-Djava.net.preferIPv4Stack=true
-Dapp.instance.cnt=1500280690_12361
-Dapp.instance=booker
-Dapp.env=dev
-Dapp.user=th_dev
-Dtemp.dir=/var/tmp/
-DMEM_POLICY=mini


Thanks for your time!!! very appreciated!

Regards
Aaron


aaron@tophold.com



-- 
Best regards,
Andrey V. Mashenkov

Re: How the Ignite Service performance? When we test the CPU soon be occupied 100%

Posted by Andrey Mashenkov <an...@gmail.com>.
Hi,

Looks like a heavy SQL query run on grid.
Does you service run SQL queries?

On Wed, Aug 2, 2017 at 3:44 PM, aaron@tophold.com <aa...@tophold.com> wrote:

> hi All,
>
> we use Ignite as the remote service; when we do test, try to issue ~100
> request/Second to remote service. soon the CPU increase to 100%.
>
> And then client timeout.  from the Profiler we can find the svc thread
> consumer most of the time.  instances are deployed on same machine, so the
> network should be the issue.
>
> The receiver side will execute request in separated thread, and very
> straightforward,  no high GC watched.
>
>
>
>
>
>
> client get service as: timeout is 4000
>
> service = ignite.services(ignite
>         .cluster()
>         .forPredicate(new CommandServiceNodeFilter(identify)))
>         .serviceProxy(identify, CommandService.class, true, DEF_SVC_TIMEOUT);
>
>
> Binary configuration as:
>
> BinaryConfiguration binaryConfiguration = new BinaryConfiguration();
> binaryConfiguration.setNameMapper(new BinaryBasicNameMapper(false));
> binaryConfiguration.setIdMapper(new BinaryBasicIdMapper(true));
> binaryConfiguration.setTypeConfigurations(typeConfigurations);
> binaryConfiguration.setSerializer(new BinaryReflectiveSerializer());
> cfg.setBinaryConfiguration(binaryConfiguration);
>
> JVM arg:
>
> -Xms4g
> -Xmx4g
> -XX:+HeapDumpOnOutOfMemoryError
> -XX:HeapDumpPath=D:\data\memory
> -XX:+AggressiveOpts
> -Djava.net.preferIPv4Stack=true
> -XX:MaxMetaspaceSize=256m
> -XX:+UseG1GC
> -XX:MaxGCPauseMillis=20
> -XX:InitiatingHeapOccupancyPercent=35
> -XX:+DisableExplicitGC
> -Djava.awt.headless=true
> -DFIND_STRATEGY=jdbc
> -DIGNITE_THREAD_DUMP_ON_EXCHANGE_TIMEOUT=true
> -Duser.timezone=UTC
> -Djava.net.preferIPv4Stack=true
> -Dapp.instance.cnt=1500280690_12361
> -Dapp.instance=booker
> -Dapp.env=dev
> -Dapp.user=th_dev
> -Dtemp.dir=/var/tmp/
> -DMEM_POLICY=mini
>
>
> Thanks for your time!!! very appriciated!
>
> Regards
> Aaron
> ------------------------------
> aaron@tophold.com
>



-- 
Best regards,
Andrey V. Mashenkov