Read 2 живые и 1056 надгробий клетки
Это звучит, как вы имеете дело с плохой моделью данных. Это то, что происходит, когда у вас есть модель, которая поддерживает большое количество операций DELETE. Для сообщения, которое вы упомянули выше, этот запрос должен был сортировать 1056 надгробных камней только для того, чтобы вернуть 2 значения, о которых действительно беспокоило приложение. Кассандра не устраивает DELETE. Поэтому, если вы планируете поддерживать DELETE, ваша модель должна быть разработана для смягчения размещения надгробий.
Способ вокруг этого состоит в том, чтобы ваша команда приложений смоделировала таблицу для этих запросов таким образом, чтобы поддерживать неизменяемые записи. Обычно это означает повторное использование таблицы в качестве временного ряда. Конечно, не видя оскорбительной модели, я могу только догадываться.
на одном конкретном узле
ли это всегда происходит на том же узле? Если это так, значит, вы попадаете в другую ловушку моделирования данных, где слишком много данных записывается в один раздел, создавая «горячую точку» в вашем кластере.
Если это не всегда один и тот же узел, то это похоже на то, что узел используется в качестве координатора для выполнения слишком большого количества запросов. Убедитесь, что ваша команда приложений использует код TokenAwareLoadBalancingPolicy
в своем коде драйвера и что они неправильно используют инструкции BATCH.
Откуда вы знаете, используется ли BATCH неправильно?
Если BATCH используется для обеспечения атомных обновлений в одном разделе, то он используется должным образом. Если BATCH используется для повышения производительности при применении серии обновлений в одном сетевом отключении, то он используется неправильно. Если вы используете Spring Data Cassandra, на самом деле это делает за кулисами при сохранении списка объектов.
Трудно сказать, не видя вашу модель данных, но я представил некоторые мысли, основанные на проблемах, которые я видел раньше. – Aaron