私はdatastax cassandra 2.1ドライバーを使用しており、〜8000 IOPSの速度で読み取り/書き込み操作を実行しています。プール オプションを使用してセッションを構成し、それぞれがクラスター内の異なるノードに接続ポイントとして接続する読み取りと書き込みに個別のセッションを使用しています。これは、たとえば 5 分間は問題なく動作しますが、その後、次のような多くの例外が発生します。
失敗: com.datastax.driver.core.exceptions.NoHostAvailableException: すべてのホストがクエリに失敗しました (試行: /10.0.1.123:9042 (com.datastax.driver.core.TransportException: [/10.0.1.123: 9042] 接続が閉じられました)、/10.0.1.56:9042 (com.datastax.driver.core.exceptions.DriverException: 利用可能な接続を取得しようとしている間にタイムアウトが発生しました (ホストごとの接続のドライバー数を増やしたい場合があります)) )
何が問題なのか、誰でも助けてもらえますか?
例外により、ホストごとの接続数を増やすように求められますが、このパラメーターに設定できる値はどれくらいですか? またCoreConnectionsPerHost
、2が最大であるという例外がスローされるため、2を超えて設定することはできません。
これは、各読み取り/書き込みセッションを作成する方法です。
PoolingOptions poolingOpts = new PoolingOptions();
poolingOpts.setCoreConnectionsPerHost(HostDistance.REMOTE, 2);
poolingOpts.setMaxConnectionsPerHost(HostDistance.REMOTE, 200);
poolingOpts.setMaxSimultaneousRequestsPerConnectionThreshold(HostDistance.REMOTE, 128);
poolingOpts.setMinSimultaneousRequestsPerConnectionThreshold(HostDistance.REMOTE, 2);
cluster = Cluster
.builder()
.withPoolingOptions( poolingOpts )
.addContactPoint(ip)
.withRetryPolicy( DowngradingConsistencyRetryPolicy.INSTANCE )
.withReconnectionPolicy( new ConstantReconnectionPolicy( 100L ) ).build();
Session s = cluster.connect(keySpace);