Рассмотрим сценарий, в котором у нас есть кластер cassandra с узлами [A, B, C]. Теперь клиент X делает запрос, который переходит на узел A. Теперь, если старый gc запускается на A. Node A будет приостановлено. Теперь, что будет поведение запроса клиента в следующих случаяхПоведение клиента Cassandra во время GC-паузы
- GC старт Пауза перед тем запрос клиента достигает начала паузы
- GC после запроса клиента достигает
запросит идет на другой узел или ему будет продолжать ждать ответа до указанного таймаута.
Также читает метрику латентности в кассандре, рассматривая это время паузы GC?
Даже я согласен с тобой измерить метрику задержки в клиентском приложении. В моей клиентской метрике я могу видеть латентные всплески, где, как и при чтении латентности метрики кассандры, таких пиков не наблюдается. Поэтому я подумал, что это может быть связано с gc pause. в любом случае, чтобы подтвердить это? – Vikee
Я не уверен, что есть простой способ. Вы можете установить Cassandra для генерации журналов gc, и вы можете посмотреть на них, чтобы увидеть, когда произошло gc и сколько времени они взяли. Вам нужно будет посмотреть на все узлы, поскольку трудно точно знать, к какому узлу относится конкретный запрос. Рассматривая один из моих кластеров, я вижу, что GC, как правило, занимает от 0,01 до 0,9 секунды, но время от времени будет длиннее одного 2,91 секунды. –