2017-02-16 45 views
0

Компоненты: apache ignite + apache cassandra. Используйте драйвер defaut datastax. После выполнения нескольких операций (около 3-5 миллиардов сущностей, помещенных в кеш), мы получаем ситуацию, когда драйвер datastax всегда подключается к кассандре от разжигания.подключение драйвера datastax = apache ignite и cassandra (вы можете увеличить число драйверов для соединений на хост)

2017-02-16 13:29:21.287 INFO 160487 --- [ sys-#441%null%] m.r.t.d.c.m.p.c.c.p.RetryPolicyImpl  : init cluster 
2017-02-16 13:29:21.288 INFO 160487 --- [ sys-#441%null%] com.datastax.driver.core.Cluster   : New Cassandra host <our host> added 
2017-02-16 13:29:21.307 INFO 160487 --- [ sys-#441%null%] m.r.t.d.c.m.p.c.c.p.RetryPolicyImpl  : close cluster 
2017-02-16 13:29:23.516 INFO 160487 --- [ sys-#441%null%] com.datastax.driver.core.ClockFactory : Using native clock to generate timestamps. 
2017-02-16 13:29:23.537 INFO 160487 --- [ sys-#441%null%] c.d.d.c.p.DCAwareRoundRobinPolicy  : Using data-center name 'datacenter1' for DCAw 

И этот процесс бесконечен и его можно прервать перезапуском сервера.

Инфраструктура: 1 сервер ignite - ~ Xmx30g и 8 ядер. 25 клиентов заживают ~ Xmx1g и 8 ядер. 1 узел кассандры. Размер партии (объекты, которые будут помещены в кеш, а затем cassandra) составляет около 1-2M.

Config DataSource =>

public DataSource dataSource() { 
     DataSource dataSource = new DataSource(); 
     dataSource.setUser(login); 
     dataSource.setPassword(pass); 
     dataSource.setPort(port); 
     dataSource.setContactPoints(host); 
     dataSource.setRetryPolicy(retryPolicy); 
     dataSource.setFetchSize(10_000); 
     dataSource.setReconnectionPolicy(new ConstantReconnectionPolicy(1000)); 
     dataSource.setLoadBalancingPolicy(DCAwareRoundRobinPolicy.builder().withUsedHostsPerRemoteDc(0).build()); 
     dataSource.setSocketOptions(new SocketOptions().setReadTimeoutMillis(100_000).setConnectTimeoutMillis(100_00)); 
     return dataSource; 
    } 

конфигурация кэш =>

CacheConfiguration<KeyIgnite, Long> cfg = new CacheConfiguration<>(); 
     cfg 
       .setName(area) 
       .setRebalanceMode(CacheRebalanceMode.SYNC) 
       .setStartSize(1_000_000) 
       .setAtomicityMode(CacheAtomicityMode.ATOMIC) 
       .setIndexedTypes(KeyIgnite.class, Long.class) 
       .setCacheMode(CacheMode.PARTITIONED) 
       .setBackups(0); 

     if (!clientMode) { 

      CassandraCacheStoreFactory<KeyIgnite, Long> csFactory = new CassandraCacheStoreFactory<>(); 
      csFactory.setDataSource(ds); 
      csFactory.setPersistenceSettings(kv); 

//   CassandraCacheStoreFactoryDwh<KeyIgnite, Long> csFactory = new CassandraCacheStoreFactoryDwh<>(ds, kv,params); 

      cfg 
        .setCacheStoreFactory(csFactory) 
        .setReadThrough(true) 
        .setWriteThrough(true); 
     } 

     cfg.setExpiryPolicyFactory(TouchedExpiryPolicy.factoryOf(new Duration(TimeUnit.DAYS, 5))); 
     return cfg; 

воспламеняться конфиг =>:

TcpDiscoveryMulticastIpFinder finder = new TcpDiscoveryMulticastIpFinder(); 
     finder.setAddresses(adresses); 

     return Ignition.start(
       new IgniteConfiguration() 
         .setClientMode(clientMode) 
         .setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(finder).setNetworkTimeout(10000)) 
         .setFailureDetectionTimeout(50000) 
         .setPeerClassLoadingEnabled(false) 
         .setLoadBalancingSpi(new RoundRobinLoadBalancingSpi()) 

     ); 

Когда мы сделали несколько итераций положить элементы кэшировать мы получили этот случай.

после включения уровня отладки я получил эту запись:

2017-02-17 17:48:41.570 DEBUG 24816 --- [ sys-#184%null%] com.datastax.driver.core.RequestHandler : [1071994376-1] Error querying ds-inmemorydb-02t/10.216.28.34:9042 : com.datastax.driver.core.exceptions.DriverException: Timeout while trying to acquire available connection (you may want to increase the driver number of per-host connections) 
+0

Такой ситуация происходит, когда мы начинаем более 10 клиентских поклонов параллельно. –

+0

Борис, не могли бы вы добавить threaddumps узлов, на которые вы получаете сообщение «timeout»? Вы также должны узнать, какие другие соединения на этих узлах заняты. – Yakov

ответ

0

Увеличение тайма-аута на водителе помогло

 Смежные вопросы

  • Нет связанных вопросов^_^