clickhouse如何解决log日志文件打满内存问题

本文档描述了如何处理ClickHouse内存不足的问题,通过查询日志文件大小,删除占用空间的日志分区,调整配置文件以定期清理日志,并重启服务以确保设置生效。操作包括检查日志文件、删除特定分区、创建force_drop_table标志文件以及修改query_log配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天早上想看看clickhouse里面跑了多少数据了,一查询刺激了。。。。。

 抱着遇到问题解决问题的态度,根据报错那不就是内存空间不足了吗?

来到服务器df -h一跑果然use%达到100%

 没得说清内存吧,可是要怎么清呢,问了度娘一大圈,总结还是clickhouse一些XX_log日志文件太大了,那就删呗

重点来了。。。

1、先看是哪个日志文件把我的内存打满了

SELECT 
    sum(rows) AS `总行数`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`,
    `table` AS `表名`
FROM system.parts where database = 'system' group by `table`

2、找到后执行删除命令,注意clickhouse里面的日志文件都是按照日期分区存储的,query_thread_log或者query_log,看具体哪个日志文件占的内存大

alter table system.query_thread_log drop partition '202201';

3.如果日志文件的大小超过50G,删除会报错,此时需要添加一个文件/var/lib/clickhouse/flags/force_drop_table,文件内容如下;添加完即可成功删除

<max_table_size_to_drop>0</max_table_size_to_drop>

删干净之后再用df看,发现内存空闲多了

 

4、删除完之后并没有完全解决问题,要想完全解决问题,需要修改服务端的config.xml(配置文件位置 /etc/clickhouse-server/config.xml)配置文件(设置每15天清一次日志文件)

<query_log>
    <database>system</database>
    <table>query_thread_log</table>
    <engine>Engine = MergeTree PARTITION BY event_date ORDER BY event_time TTL event_date + INTERVAL 15 day</engine>
    <flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>

5、最最重要的是要重启一下clickhouse,如果你是docker部署的直接,不重启还是会报错

docker restart 容器id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值