Версия протокола драйвера Cassandra Python и ограничения на количество подключений не совпадают
Я использую версию драйвера Python для Datastax:3.23
Версия Cassandra: версия DSE 5.1.16
Вывод cqlsh дает следующее:
[cqlsh 5.0.1 | Cassandra 3.11.3.5116 | DSE 5.1.16 | CQL spec 3.4.4 | Nativeprotocol v4]
cluster = Cluster(['X.X.X.X'],port=9042,auth_provider=provider,protocol_version=4)
max_requests = cluster.get_max_requests_per_connection(0)
max_connections = cluster.get_max_connections_per_host(0)
print(max_connections)
print(max_requests)
Выход:-
8100
На основе документации DataStax max_request_per_host in v4
должно быть 32786.
Не уверен, в чем проблема.
1 ответ
32 КБ запросов на одно соединение - это теоретический максимум, а не фактическое количество. У каждого драйвера есть некоторая константа как максимальное количество запросов на соединение. Например, драйвер Java разрешает 1024 запроса на соединение, C# - 2048 и т. Д.
Вы можете увеличить это значение, используя cluster.set_max_requests_per_connection
для драйвера Python или соответствующих функций в других драйверах. Но я не рекомендую сильно увеличивать его - если у вас слишком много запросов на лету, это признак того, что ваш кластер не справляется с нагрузкой, и, увеличивая настройку, вы просто скрываете настоящую проблему.