2017-11-08 10 views
0

私はCassandra dbを使用して、頻繁なリクエストを取得します。私のコードCassandraでタイムアウト例外

public Map<String,String> loadObject(ArrayList<Integer> tradigAccountList){ 

     com.datastax.driver.core.Session session; 
     Map<String,String> orderListMap = new HashMap<>(); 
     List<ResultSetFuture> futures = new ArrayList<>(); 
     List<ListenableFuture<ResultSet>> Future; 


     try { 
      session =jdbcUtils.getCassandraSession(); 
      PreparedStatement statement = jdbcUtils.getCassandraPS(CassandraPS.LOAD_ORDER_LIST); 

      for (Integer tradingAccount:tradigAccountList){ 
       futures.add(session.executeAsync(statement.bind(tradingAccount).setFetchSize(3000))); 
      } 


         for (ResultSetFuture future : futures){ 

          for (Row row : future.get().all()){ 
           orderListMap.put(row.getString("cliordid"),row.getString("ordermsg")); 
          } 
         } 

     }catch (Exception e){ 
     }finally { 
     } 
     return orderListMap; 
    } 

で、次の私は、同時に約30リクエストを送信し、私のクエリは、このようなものです:私はこのクエリを実行するたびに、それは少なくとも約30000行をフェッチします

"SELECT cliordid,ordermsg FROM omsks_v1.ordersStringV1 WHERE tradacntid = ?"

。しかし、私は同時に複数の要求を送信すると、タイムアウト例外がスローされます。

私のCassandraクラスタには、ごとに32の同時読み書きスレッドを持つ2つのノードがあります。誰も私にこのための解決策を提供できますか?

+1

のですか? –

答えて

0
CREATE TABLE omsks_v1.ordersstringv1_copy1 (
    tradacntid int, 
    cliordid text, 
    ordermsg text, 
    PRIMARY KEY (tradacntid, cliordid) 
) WITH bloom_filter_fp_chance = 0.01 
AND comment = '' 
AND dclocal_read_repair_chance = 0.1 
AND default_time_to_live = 0 
AND gc_grace_seconds = 864000 
AND max_index_interval = 2048 
AND memtable_flush_period_in_ms = 0 
AND min_index_interval = 128 
AND read_repair_chance = 0.0 
AND speculative_retry = '99.0PERCENTILE' 
AND caching = { 
    'keys' : 'ALL', 
    'rows_per_partition' : 'NONE' 
} 
AND compression = { 
    'sstable_compression' : 'LZ4Compressor' 
} 
AND compaction = { 
    'class' : 'SizeTieredCompactionStrategy' 
}; 

これは、あなたが私たちのテーブルスキーマを示すことができ、テーブルスキーマ

関連する問題