Ошибка Cassandra Cqlsh OperationTimedOut=время ожидания запроса клиента. Посмотреть Сессии.выполнить[async] (тайм-аут)

Я хочу передать данные из одного кластера Кассандры (достигнут через 192.168.0.200) в другой кластер Кассандры (достигнут через 127.0.0.1). Данные 523 строк, но каждая строка составляет около 1 МБ. Я использую команду COPY FROM и COPY TO. Я получаю следующую ошибку, когда я выдаю копию команде:

Error for (8948428671687021382, 9075041744804640605):
OperationTimedOut - errors={
'192.168.0.200': 'Client request timeout. See Session.execute[_async](timeout)'},
last_host=192.168.0.200 (will try again later attempt 1 of 5).

Я устал менять в:

[connection]
client_timeout = 5000

но это не помогло. Спасибо за вашу помощь

4 ответов


неясно, какую версию Cassandra вы используете здесь, поэтому я собираюсь предположить 3.0.x

на COPY функция хороша, но не всегда лучший выбор (т. е. если у вас много данных), однако для этого, хотя вы можете проверить некоторые из ваших настройки таймаута в Афинах

документы здесь покажут pagetimeout настройка тоже, которая может вам помочь.

перемещение данных между двумя кластерами может быть выполнено рядом других пути. Вы можете использовать любой из следующих:

  1. на sstableloader
  2. один из водителей нравится драйвер java
  3. использование spark для копирования данных из одного кластера в другой,как в этом примере
  4. использование OpsCenter для клонировать кластера
  5. на Кассандра погрузчик (Я знаю, что несколько человек используют это)

конечно #3 и #4 нужна DSE cassandra, но это просто, чтобы дать вам идею. Я не был уверен, используете ли вы Apache Cassandra или Datastax Enterprise Cassandra.

в любом случае, надеюсь, это поможет!


вы можете увеличить тайм-аут запроса (по умолчанию: 10 секунд), а не тайм-аут подключения.

попробуй:

cqlsh --request-timeout=6000

и добавить:

[connection]
request_timeout = 6000

на .


Что касается таймаута копирования, правильный способ-использовать параметр PAGETIMEOUT, как уже указано.

копия ключа.таблица в '/dev / null' с PAGETIMEOUT=10000;

попытка установить --request-timeout=6000 с помощью cqlsh не помогает в этой ситуации.


Привет кроме того,

1.Проверьте надгробия
В cassandra tombstones ухудшают производительность чтения, и возникает следующая проблема OperationTimedOut: errors={'127.0.0.1': 'тайм-аут запроса клиента. Посмотреть Сессии.execute_async'}, last_host=127.0.0.1
Примечание
Когда мы вставляем данные в таблицу с нулевыми значениями в Столбцах, она создает надгробия. нам нужно избегать вставок null внутри таблицы.
Есть несколько доступные опции, такие как unset(https://docs.datastax.com/en/latest-csharp-driver-api/html/T_Cassandra_Unset.htm) и ignoreNulls (https://github.com/datastax/spark-cassandra-connector/blob/master/doc/5_saving.md) свойство в spark.
Вы можете проверить состояние таблицы, используя следующую команду
nodetool tablestats keyspace1.tablename

2.Удалить Надгробия
Если вы работаете над один узел вы можете удалить надгробия, изменив таблицу Изменить таблицу keyspace1.имятаблицы С gc_grace_seconds = '0';

3.read_request_timeout_in_ms: настройте значение в cassandra.файл yaml для увеличения времени ожидания запроса на чтение