代码之家  ›  专栏  ›  技术社区  ›  Harry

提交日志增长中的问题

  •  2
  • Harry  · 技术社区  · 8 年前

    我有一台机器,提交日志一直增加到7.8GB,而且还在增长,我检查了一个属性 commitlog_total_space_in_mb: 8192 卡桑德拉对此进行了评论。亚马尔。我怀疑这一定是默认值。

    1) 增加提交日志大小的问题是什么?
    2) 是不是说找不到我的记忆表treshold?

    编辑:

    memtable_cleanup_threshold=1/(memtable_flush_writers+1)*(memtable_offheap_space_in_mb+memtable_heap_space_in_mb)

    如果推荐值为,

    memtable_flush_writers -  Smaller of number of disks or number of cores with a minimum of 2 and a maximum of 8, so in our case it is '8'
    
    memtable_offheap_space_in_mb - 1/4 of the heap size, so in our case it is 2GB
    memtable_heap_space_in_mb - 1/4 of the heap size, so in our case it is 2GB
    

    所以计算将会是,

     memtable_cleanup_threshold = 1/(8 + 1) * 4096
     memtable_cleanup_threshold = 455MB
    

    为什么它没有刷新到455 MB并删除提交日志?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Valerie Parham-Thompson    8 年前

    是的,默认值为8192MB(或日志文件磁盘空间的1/4,以较小者为准——如果服务器较小,则可能适用)。资料来源: Cassandra documentation on commitlog_total_space_in_mb .

    要回答您的问题:

    (1) 如果commitlog文件继续增长,可能会耗尽磁盘空间。

    (2) 尚未达到配置的阈值。

    在您要添加的其他问题后编辑:

    刷新memtables时不会删除CommitLog。

    请注意,文件大小是根据您的配置大小预先分配的——我想您已经了解了这一点,但是请注意,如果其他人试图通过 ls 或者类似的。

    如果你 nodetool drain 或者重新启动,它们将被清除。否则,它们将继续增长到最大尺寸并旋转。

    下面是一个测试,看看如果你强制冲水会发生什么:

    nodetool tablestats keyspace.table | grep "Memtable data size"
    Memtable data size: 1292049
    
    cat /var/lib/cassandra/commitlog/CommitLog-A.log | wc -l
    10418
    
    cat /var/lib/cassandra/commitlog/CommitLog-B.log | wc -l
    0
    
    nodetool flush
    
    nodetool tablestats keyspace.table | grep "Memtable data size"
    Memtable data size: 0
    
    cat /var/lib/cassandra/commitlog/CommitLog-A.log | wc -l
    10419
    
    cat /var/lib/cassandra/commitlog/CommitLog-B.log | wc -l
    0
    
    nodetool drain
    
    nodetool tablestats keyspace.table | grep "Memtable data size"
    Memtable data size: 0
    
    cat /var/lib/cassandra/commitlog/CommitLog-A.log | wc -l
    no such file
    
    cat /var/lib/cassandra/commitlog/CommitLog-B.log | wc -l
    0
    

    如果它根据memtable配置自动刷新,您会看到类似的结果。在以下观察到的刷新过程中,commitlog也没有被清除:

    Screenshot of Grafana graph of memtable size

    推荐文章