Hi,

I am on 2.7.5 version and using the same Spring configuration for both
servers and thick clients.  I do not want to use thin client as I want my
client to be part of the grid.  What I have come to learn is that even if 
Ignition.setClientMode(true); or conf.setClientMode(true); some thread pools
are created that really shouldn't be.  For example, if a cache is configured
for write-behind, with <property name="writeBehindFlushThreadCount"
value="32" />, 32 flusher threads will be created on the client, where the
flushing will only ever happen on the server if I am not mistaken.  So
thread pool creation seems to disregard whether or not I am a client.

In order to trim my client threads, I now load the Spring configuration, and
do the following below.  I have also noticed that if you don't give at least
one thread to the pool, for example IFGS, Ignite will not start and
complains that cnt must be > 0.  Several thread pools in the configuration
aren't documented here (https://apacheignite.readme.io/docs/thread-pools),
so what does:

1) UtilityCachePoolSize do and do I care about it if I am a client?
2) ManagementPoolSize do and do I care about it if I am a client?
3) QueryTheadPool (documented) but do I need it on a client?

It would be helpful if documentation could be added for the missing pools
above and also what the minimal client configuration should be as to
minimize client memory footprint and resource usage.

Thanks!
Rick

                    conf.setClientMode(true);
                    // For clients disable as many threads as we can.
                    Boolean disableConnectorConfig =
Boolean.parseBoolean(TAFJCacheFactory.getCacheProperties().getProperty(CacheConstants.KEY_PROP_IGNITE_CLIENT_DISABLE_CONNECTOR_CONFIG,
CacheConstants.DEFAULT_IGNITE_CLIENT_DISABLE_CONNECTOR_CONFIG));
                    if(disableConnectorConfig) {
                        conf.setConnectorConfiguration(null);
                    }
                    // Public Thread pool used for compute grid.
                   
conf.setPublicThreadPoolSize(Integer.parseInt(TAFJCacheFactory.getCacheProperties().getProperty(CacheConstants.KEY_PROP_IGNITE_CLIENT_PUBLIC_TP_SIZE,
CacheConstants.DEFAULT_IGNITE_CLIENT_PUBLIC_TP_SIZE)));
                    // Minimum must be one.
                   
conf.setDataStreamerThreadPoolSize(Integer.parseInt(TAFJCacheFactory.getCacheProperties().getProperty(CacheConstants.KEY_PROP_IGNITE_CLIENT_DATA_STREAMER_TP_SIZE,
CacheConstants.DEFAULT_IGNITE_CLIENT_DATA_STREAMER_TP_SIZE)));
                    // Minimum must be one.
                   
conf.setIgfsThreadPoolSize(Integer.parseInt(TAFJCacheFactory.getCacheProperties().getProperty(CacheConstants.KEY_PROP_IGNITE_CLIENT_IGFS_TP_SIZE,
CacheConstants.DEFAULT_IGNITE_CLIENT_IGFS_TP_SIZE)));
                   
conf.setServiceThreadPoolSize(Integer.parseInt(TAFJCacheFactory.getCacheProperties().getProperty(CacheConstants.KEY_PROP_IGNITE_CLIENT_SERVICE_TP_SIZE,
CacheConstants.DEFAULT_IGNITE_CLIENT_SERVICE_TP_SIZE)));
                    conf.setDataStorageConfiguration(null);
                    List<CacheConfiguration> configs =
Arrays.asList(conf.getCacheConfiguration());
                    for(CacheConfiguration config : configs) {
                        if(config.isWriteBehindEnabled()) {
                            config.setWriteBehindFlushThreadCount(1);
                        }
                    }



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

Reply via email to