2

Astyanax 接続プールの構成方法に混乱しています。以下を使用してプールを構成します。

public final int CONNECTION_POOL_SIZE_PER_HOST = 1;
private String conecPoolName = "xxxx";
private String ipSeeds = "xxxxx";
private String clusterName = "xxxxx";
private String keyspaceName = "xxxxx";
private Keyspace keyspace;

private ConnectionPoolConfigurationImpl conPool;

public DMPAstyanaxConfPool() throws DMPException {
    conPool = new ConnectionPoolConfigurationImpl(conecPoolName).setMaxConnsPerHost(
            CONNECTION_POOL_SIZE_PER_HOST).setSeeds(ipSeeds);

    AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder().forCluster(clusterName)
            .forKeyspace(keyspaceName)
            .withAstyanaxConfiguration(new AstyanaxConfigurationImpl().setDiscoveryType(NodeDiscoveryType.NONE))
            .withConnectionPoolConfiguration(conPool)
            .withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
            .buildKeyspace(ThriftFamilyFactory.getInstance());

    context.start();
    keyspace = context.getEntity();
}

ほとんどのプロパティは簡単に理解できますが、setMaxConnsPerHost が正確に何を設定するのかはわかりません。私のマシンでは、複数の cassandra 接続を作成するマルチスレッド アプリケーションを使用しており、setMaxConnsPerHost が 1 に設定されていても問題なく動作します。ホストあたりの接続数。

サーバー構成とこの構成は関連していますか? そうでなければ、この設定の正確な意味は何ですか?

4

1 に答える 1

1

Javaドキュメントから:

単一のホストのプールに割り当てる接続の最大数

ConnectionPoolConfigurationImpl(conecPoolName)setMaxConnsPerHostは、ホストごとに持つことができるホストの数を構成します。

public ConnectionPoolConfigurationImpl setMaxConnsPerHost(int maxConns) {
    Preconditions.checkArgument(maxConns > 0, "maxConnsPerHost must be >0");
    //this relates to connections per each node.
    this.maxConnsPerPartition = maxConns;
    return this;
}

プールで許可される最大接続数を設定するためのsetMaxConnsもあります。

プール内の接続の最大数。すべての接続プールの実装で使用されるわけではありません。

public ConnectionPoolConfigurationImpl setMaxConns(int maxConns) {
    this.maxConns = maxConns;
    return this;
}

どちらを使用するかは、接続プールの実装タイプによって異なります。

しかし悲しいことに、setMaxConnsPerHostsetMaxConnsの両方にドキュメントが不足しているようです。

于 2013-03-08T16:28:40.770 に答える