Ошибка code = 1200 после обновления Cassandra до 3.11.3 - PullRequest
0 голосов
/ 14 сентября 2018

Я только что унаследовал систему с 3 узлами, 2 в одном центре данных с коэффициентом репликации 2 и 1 во втором центре данных с коэффициентом репликации 1. Система была обновлена ​​с Cassandra 3.9 до Cassandra 3.11.3.Поскольку при обновлении любые запросы в cqlsh возвращают ошибку

ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 2, 'consistency': 'LOCAL_QUORUM'}

Может кто-нибудь подсказать, что может быть причиной этой проблемы или где мне следует искать, чтобы определить проблему?

edit: я повторил свой запросс согласованностью один, но все еще получил ошибку

ReadTimeout: Error from server: code=1200 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'}

1 Ответ

0 голосов
/ 14 сентября 2018

Слишком длинный для комментариев ...

Есть несколько причин, которые могут быть причиной этого.

1 - насколько велик самый большой раздел? IПроверьте это следующим образом:

bin/nodetool tablestats yourKeyspaceName.ablog | grep "partition maximum"

Если это произойдет с чем-то в диапазоне двузначных ГБ, у вас проблемы.

2 - Есть ли какие-либоНадгробия? Вы можете проверить это с помощью аналогичной команды:

bin/nodetool tablestats yourKeyspaceName.ablog | grep "tombstones"

Если это вернется с номерами из 3 или 4 цифр, это может быть проблемой.

3 - Понижение до 3.11.2 .3.11.2 и 3.11.3 используют один и тот же формат SSTable.Это просто вопрос отключения двоичных файлов.Загрузите / untar 3.11.2, переместите каталог conf из каталога 3.11.3, и все должно быть в порядке.

Я только предлагаю это, потому что вы можете работать с CASSANDRA-14672 .

4 - LOCAL_QUORUM w / RF = 2 Как я уже упоминал в комментариях, запросы в LOCAL_QUORUM с RF <3 ничем не отличаются от запросов в ALL.Кассандра вычисляет кворум (большинство) следующим образом: </p>

QUORUM = (RF / 2) + 1 = (2/2) + 1 = 2 (реплики должны отвечать)

Серьезно, вы 'не получая ничего , делая это.Это имеет смысл, когда у вас 3 или более RF:

QUORUM = (RF / 2) + 1 = (3/2) + 1 = 2 (реплики должны отвечать)

И на самом деле, запросы к QUORUM с RF = 2 причиняют вам боль, поскольку вы не можете допустить, чтобы ни один узел не работал.

...