Astyanax client
からデータを読み取るために使用していますCassandra database
。私は を持ってsingle cluster
いfour nodes
ます。私は持っていreplication factor of 2
ます。私は違いが何であるかを理解しようとしています
setMaxConns and setMaxConnsPerHost
Astyanax クライアントのメソッド? これに関する適切なドキュメントが見つかりません。
複数のスレッドを生成し、Cassandra データベースへの接続を 1 回だけ作成して (シングルトンであるため)、他の要求のために再利用し続けるマルチスレッド コードがあります。
上記の2つの方法が読み取りパフォーマンスにどのように影響するかを理解しようとしていますか? そして、それらの値はどのように設定する必要がありますか?
そして、上記の2つの方法を次のように設定している場合-
setMaxConns(-1) and setMaxConnsPerHost(20)
それではどういう意味ですか?どんな説明でも大いに役立ちます。
更新されたコード:-
以下はコードです。接続を確立するために使用しています-
private CassandraAstyanaxConnection() {
context = new AstyanaxContext.Builder()
.forCluster(ModelConstants.CLUSTER)
.forKeyspace(ModelConstants.KEYSPACE)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
)
.withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
.setPort(9160)
.setMaxConnsPerHost(20)
.setMaxConns(-1)
.setSeeds("host1:9160,host2:9160,host3:9160,host4:9160")
)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setCqlVersion("3.0.0")
.setTargetCassandraVersion("1.2"))
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());
context.start();
keyspace = context.getEntity();
emp_cf = ColumnFamily.newColumnFamily(
ModelConstants.COLUMN_FAMILY,
StringSerializer.get(),
StringSerializer.get());
}
このコードをデバッグしている場合、BagOfConnectionsConnectionPoolImpl
クラスにヒットしていません。接続やその他のデフォルト パラメータがどのように使用されているかを確認するために、同じクラスに多くのブレークポイントを配置しました。しかし、なぜそのクラスにヒットしないのかわかりません。