Ошибка 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 настройка тоже, которая может вам помочь.
перемещение данных между двумя кластерами может быть выполнено рядом других пути. Вы можете использовать любой из следующих:
- на sstableloader
- один из водителей нравится драйвер java
- использование spark для копирования данных из одного кластера в другой,как в этом примере
- использование OpsCenter для клонировать кластера
- на Кассандра погрузчик (Я знаю, что несколько человек используют это)
конечно #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 для увеличения времени ожидания запроса на чтение