Подтвердить что ты не робот

Время ожидания RPC в cqlsh - Кассандра

У меня есть 5 узлов в моем кольце с SimpleTopologyStrategy и replication_factor=3. Я вставил 1M строк с помощью стресс-инструмента. Когда я пытаюсь прочитать количество строк в cqlsh, используя

SELECT  count(*) FROM  Keyspace1.Standard1 limit 1000000;

Ошибка с ошибкой:

Запрос не завершился в течение rpc_timeout.

Он выбирает предел 100000. Сбой даже на 500000.
Все мои узлы вверх. Мне нужно увеличить rpc_timeout?

Пожалуйста, помогите.

4b9b3361

Ответ 1

Вы получаете эту ошибку, потому что запрос синхронизируется на стороне сервера. Следует знать, что это очень дорогая операция в Кассандре, как указывали другие.

Тем не менее, если вы действительно этого хотите, вы должны обновить файл /etc/cassandra/cassandra.yaml и изменить параметр range_request_timeout_in_ms. Это будет действовать для всех ваших запросов диапазона.

Пример установки 40-секундного таймаута:

range_request_timeout_in_ms: 40000

Вам, вероятно, придется настроить и на стороне клиента. При использовании cqlsh в качестве клиента это достигается путем создания/обновления вашего файла конфигурации для cqlsh под ~/.cassandra/cqlshrc и добавления параметра client_timeout в раздел connection.

Пример установки 40-секундного таймаута:

[connection]
client_timeout=40

Ответ 2

Требуется много времени для чтения в 1M-строках, поэтому, вероятно, именно поэтому он отключается. Вы не должны использовать счет, как это, это очень дорого, поскольку он должен читать все данные. Используйте счетчики Cassandra, если вам нужно подсчитать множество предметов.

Вы также должны проверить свои журналы Cassandra, чтобы подтвердить, что нет никаких других проблем - иногда исключения в Cassandra приводят к таймаутам на клиенте.