Распределение временных меток строк SSTables перепуталось с TWCS

Мы используем Cassandra 2.1.14 и перешли на TWCS на одном из наших CF несколько месяцев назад, и с тех пор, несмотря на повышение производительности и резкое сокращение среднего количества считываемых таблиц SSTable на запрос, мы заметили, что старые таблицы SSTable никогда не удаляются.

Запустив утилиту Cassandra sstableexpiredblockers, мы видим, что причина в том, что максимальная временная метка старых SSTabes выше, чем даже минимальная временная метка нового SSTable, что означает, что Cassandra не будет пытаться выселить, даже если фактические SSTables полностью захоронены (мы написали крошечное java-приложение, которое прошло через SSTable непосредственно, чтобы убедиться).

Итак, вопрос в том, почему даже в очень новых таблицах SSTable есть старые строки? Просто для уточнения: наша кодовая база НИКОГДА не обновляет строки, и ВСЕ строки имеют TTL.

Другой вопрос, учитывая, что это наша текущая ситуация, есть ли простой способ заставить Cassandra запустить выселение на старых SSTables?

Прикреплены SSTables и их минимальная/максимальная отметка времени:

введите здесь описание изображения


person sternr    schedule 09.05.2018    source источник


Ответы (1)


Таким образом, мы обнаружили, что основной причиной проблемы является восстановление чтения и активация спекулятивных повторных попыток. отключив их и один раз запустив серьезное уплотнение, чтобы удалить устаревшие SSTables, все заработало, как и ожидалось.

person sternr    schedule 24.05.2018