У нас есть кластер ES с тремя узлами данных, хранящими данные журналирования как часть стека ELK. Он работает в основном без сбоев, однако некоторые из наших индексов имеют большие журналы транзакций, например:
{
"logstash-2018.05.01": {
"operations": 30706751,
"size_in_bytes": 214119243282,
"uncommitted_operations": 0,
"uncommitted_size_in_bytes": 258
},
"logstash-2018.04.30": {
"operations": 21773218,
"size_in_bytes": 150386904084,
"uncommitted_operations": 0,
"uncommitted_size_in_bytes": 301
},
"logstash-2018.05.03": {
"operations": 20829483,
"size_in_bytes": 137593564722,
"uncommitted_operations": 0,
"uncommitted_size_in_bytes": 258
},
"logstash-2018.05.04": {
"operations": 547253,
"size_in_bytes": 3573423078,
"uncommitted_operations": 253171,
"uncommitted_size_in_bytes": 1627542718
},
"logstash-2018.05.02": {
"operations": 5341,
"size_in_bytes": 29375126,
"uncommitted_operations": 5341,
"uncommitted_size_in_bytes": 29375126
}
}
Из того, что я прочитал, транслоги должны быть очищены после того, как транзакции будут переданы соответствующему шарду. Похоже, в журнале транзакций имеется большое количество операций и, следовательно, данных в журнале транзакций, хотя количество незавершенных транзакций невелико.
Это стало известно, когда группа перебалансировала осколки. Некоторые осколки восстанавливаются за считанные минуты, а некоторые - часами. Например, я вижу, что кластер переместил осколок 42 ГБ без транслога за 17 минут, однако осколок 19 ГБ с транслогом занял более 12 часов. Ни один из этих индексов не является текущим индексом ежедневного журнала.
Мы не изменили настройки транслога по умолчанию.
Как мы можем предотвратить накопление этих больших транслогов и, если они это сделают, как мы можем их очистить?