Определение размера очереди хроники - PullRequest
0 голосов
/ 06 сентября 2018

Если нам нужно ограничить общий размер хронической очереди, скажем, 1 ГБ или 10 ГБ. Каков будет лучший способ сделать это?

Мы храним буферы в байтах, поэтому я пытался вычислить общий размер, просто суммируя размеры буфера, но похоже, что нет простого способа соотнести это с реальным размером очереди. Одним из способов является вычисление общего размера каталога с использованием файловых утилит каждые 5 минут или около того, но это может привести к ошибкам, если в интервале есть огромные данные и они могут переполниться

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

вам придется сложить размер каждого файла cq4

writePosition дает вам длину каждого файла cq4 в байтах

public class Example {

    public static void main(String[] args) throws FileNotFoundException {
        SingleChronicleQueue q = SingleChronicleQueueBuilder.builder().path("tmp").build();

        ExcerptAppender appender = q.createAppender();

        try (DocumentContext dc = appender.writingDocument()) {
            long l = dc.wire().bytes().writePosition();
            dc.wire().write().text("lastx");
        }

       DumpQueueMain.dump(q.fileAbsolutePath());

    }
}

выводит следующее

--- !!meta-data #binary
header: !SCQStore {
  writePosition: [
    131328,
    564049465049088
  ],
  indexing: !SCQSIndexing {
    indexCount: !short 8192,
    indexSpacing: 64,
    index2Index: 184,
    lastIndex: 64
  }
}

# position: 184, header: -1
--- !!meta-data #binary
index2index: [
  # length: 8192, used: 1
  65760 # truncated trailing zeros
]
# position: 65760, header: -1
--- !!meta-data #binary
index: [
  # length: 8192, used: 1
  131328 # truncated trailing zeros
]
# position: 131328, header: 0
--- !!data #binary
"": lastx

...
# 83754737 bytes remaining

--- !!meta-data #binary
header: !STStore {
  wireType: !WireType BINARY_LIGHT,
  recovery: !TimedStoreRecovery {
    timeStamp: 0
  },
  metadata: !SCQMeta {
    roll: !SCQSRoll { length: !int 86400000, format: yyyyMMdd, epoch: 0 },
    deltaCheckpointInterval: 64,
    sourceId: 0
  }
}

# position: 225, header: 0
--- !!data #binary
listing.highestCycle: 17780

# position: 264, header: 1
--- !!data #binary
listing.lowestCycle: 17780

# position: 304, header: 2
--- !!data #binary
listing.modCount: 1

# position: 336, header: 3
--- !!data #binary
chronicle.write.lock: -9223372036854775808

# position: 376, header: 4
--- !!data #binary
chronicle.lastIndexReplicated: -1

# position: 432, header: 5
--- !!data #binary
chronicle.lastAcknowledgedIndexReplicated: -1

...
# 65044 bytes remaining

, когда длина файла .cq4 определяется как

writePosition: [
    131328,
     ....
  ],

другими словами 131328 байтов

0 голосов
/ 06 сентября 2018

Файлы очереди хроники катятся по времени, а не по размеру файла.Почему вы хотите ограничить размер файла .cq4?

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

...