增长提交日志的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了增长提交日志的问题相关的知识,希望对你有一定的参考价值。

我有一台机器,提交日志不断增加到7.8 GB并且仍在增长,我检查了一个属性commitlog_total_space_in_mb: 8192,在cassandra.yaml中有评论。我怀疑它必须是默认值。

1)增长提交日志大小有什么问题? 2)是否表示未达到我的记忆阈值?

编辑:

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并删除提交日志?

谢谢, 掠夺

答案

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

回答你的问题:

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

(2)尚未满足配置的阈值。

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

刷新memtables时不会删除提交日志。

请注意,文件大小是根据您的配置大小预先分配的 - 我认为您已经想到了这一点,但请注意,如果有其他人试图通过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

如果基于可记忆配置自动刷新,您会看到类似的结果。在以下观察到的刷新过程中,commitlog也没有被清除:

Screenshot of Grafana graph of memtable size

以上是关于增长提交日志的问题的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。Example: [3,2,4,5,6,1,9], 最长的是[4,5,6]

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

sql server 2008 的事务日志文件存储数据库的啥情况

提交带有全屏片段的片段事务

SQL SERVER日志限制增长