Тайм-аут Cassandra во время запроса на чтение в последовательности LOCAL_QUORUM (требовалось 2 ответа, но ответила только 1 реплика) - PullRequest
0 голосов
/ 24 января 2019

Одно из наших приложений иногда получает ошибку:

Cassandra timeout during read query at consistency LOCAL_QUORUM (2 responses were required but only 1 replica responded)

В течение часа мы можем получить 20 или 30 из этих более 10 000 запросов или более. И повтор запроса обычно работает.

Это похоже на тайм-аут. Ошибка появляется в журналах приложения, но я не вижу ни соответствующей ошибки, ни предупреждения, ни чего-либо на самом деле ни в cassandra system.log, ни в debug.log.

Все поиски, которые я выполняю в Интернете, приводят к запросам, где люди видят это последовательно, но для меня это не согласованно. Кластер сам по себе здоров, а другие запросы возвращают просто отлично. Запрашиваемая таблица невелика (несколько десятков МБ на каждом сервере). Глядя на таблицы-диаграммы, я не вижу ничего слишком большого для чтения или записи на любом сервере для рассматриваемой таблицы. Процессор, память и т. Д. Все в порядке.

Типичная гистограмма для этой таблицы в настоящее время

Percentile  SSTables     Write Latency      Read Latency    Partition Size        Cell Count
                              (micros)          (micros)           (bytes)
50%             2.00             29.52            152.32              1916                72
75%             3.00             35.43            379.02             24601               770
95%             3.00             51.01            379.02            454826             14237
98%             3.00             61.21            379.02            654949             20501
99%             3.00             73.46            379.02            785939             24601
Min             0.00             14.24            105.78               180                 6
Max             3.00             88.15            379.02           1629722             51012

Хотя у меня его нет сразу после появления этой ошибки.

Запуск Apache Cassandra 3.11.3. Кластер из 16 узлов (8 узлов в каждом DC). Репликация DC1: 3, DC2: 3 (для всех таблиц во всех пространствах ключей пользователя). Драйвер настроен на использование DCAwareRoundRobin, и все операции чтения и записи - LOCAL_QUORUM. Приложение (как и все наши приложения) - это запись. STDC настроен, если это поможет.

Мы видим намного меньше тайм-аутов при записи, но они не равны нулю:

com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra timeout during SIMPLE write query at consistency LOCAL_QUORUM (2 replica were required but only 1 acknowledged the write)

Если это имеет значение, это происходит с таблицами персистентности Akka для этого конкретного приложения.

Я ищу возможные предложения по поводу причин, пожалуйста, так как я не смог ничего найти (и у меня не так много волос, чтобы вырвать ...).

Спасибо.

Caused by: com.datastax.driver.core.exceptions.ReadTimeoutException: Cassandra timeout during read query at consistency LOCAL_QUORUM (2 responses were required but only 1 replica responded)
at com.datastax.driver.core.Responses$Error$1.decode(Responses.java:91)
at com.datastax.driver.core.Responses$Error$1.decode(Responses.java:66)
at com.datastax.driver.core.Message$ProtocolDecoder.decode(Message.java:297)
at com.datastax.driver.core.Message$ProtocolDecoder.decode(Message.java:268)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
... 34 common frames omitted

У нас есть несколько приложений, использующих этот кластер. Это не единственное приложение с ошибками, но я полагаю, исправив это приложение, оно исправит другие.

...