美文网首页
clickhouse常见的一些问题

clickhouse常见的一些问题

作者: 越狱的灵感 | 来源:发表于2022-06-02 14:38 被阅读0次

    clickhouse server 自动重启

    一般情况下,如果不是主动使用systemctl stop clickhouse-server 停止clickhouse
    而是使用kill -9 pid关闭clickhouse,或者异常奔溃,那么如果一切正常的情况下clickhouse server 10s检测进程,自动重启。

    登录机器cat /etc/cron.d/clickhouse-server
    */10 * * * * root (which service > /dev/null 2>&1 && (service clickhouse-server condstart ||:)) || /etc/init.d/clickhouse-server condstart > /dev/null 2>&1


    1.png

    默认会10s检测一下服务进程是否正常,否则重启,检测时间可以调。/etc/init.d/clickhouse-server


    2.png

    集群执行DDL出现 distributed_ddl_task_timeout

    在执行分布式DDL的时候出现这个问题一般是有一个节点处于假死状态,但是节点又没有完全奔溃,一般报错如下
    Code: 159. DB::Exception: Received from xxxxx:29000. DB::Exception: Watching task /clickhouse/task_queue/ddl/query-0000xxxxxxx is executing longer than distributed_ddl_task_timeout (=180) seconds. There are 1 unfinished hosts (0 of them are currently active), they are going to execute the query in background.
    distributed_ddl_task_timeout 执行超过了默认的180s。
    首先检查异常节点机器网络,磁盘等信息,然后检查ck状态。一般都是磁盘满了或者网络问题,很少有zk集群出问题。处理方式的话都是清理磁盘和修复网络。

    删除表再建表后出现Cannot unlink file format_version.txt

    Code: 458, e.displayText() = DB::ErrnoException: Cannot unlink file /data2/clickhouse/store/488/488da1e0-a9ee-4191-8376-0daaa4e0314d/format_version.txt, errno: 2, strerror: No such file or directory (version 21.3.4.25 (official build))


    3.png

    建分布式表出现clickhouse zookeeper All connection tries failed

    clickhouse 集群在建分布式表的时候出现 clickhouse zookeeper All connection tries failed
    如果配置没啥问题,zk和ck集群也没啥问题,重启下zk即可恢复
    查询出现AST is too big. Maximum: 500000
    程序报错AST is too big. Maximum: 500000,语法树元素个数超过限制错误,说明查询sql很长很复杂,一般情况不会有,要木优化sql,要木修改集群配置
    在user.xml 添加
    <max_ast_elements>10000000</max_ast_elements>
    <max_expanded_ast_elements>10000000</max_expanded_ast_elements>

    分布式表删表后立马建表报错

    报错 DB::Exception: Replica xxxxx already exists

    4.png
    由于clickhouse默认的库引擎是原子数据库引擎,删除Atomic数据库中的表后不会立马执行,默认在480秒后删除。
    处理方式
    1,在config.xml减少database_atomic_delay_before_drop_table_sec的值
    <database_atomic_delay_before_drop_table_sec>480</database_atomic_delay_before_drop_table_sec>
    2,添加sync关键字
    DROP TABLE IF EXISTS 表名 sync

    插入同一大小同一顺序完全一样的数据发现数据条数少了

    CK会对同一个block保证重复插入的insert的幂等性,会检测重复,默认会去重,使用insert_deduplicate配置。如果不需要去重则可以使用SET insert_deduplicate=0,但不推荐这样做。

    5.png
    cat clickhouse-server.log | grep ignoring

    查询出现DB::Exception: Estimated query execution time (60.10510861262919 seconds) is too long

    6.png

    查询超过了限制的时间(60s),需要优化sql,或者做预聚合

    写入异常 Too many partitions for single INSERT block (more than 100)

    image2022-2-18_10-1-0.png

    一次写入的分区数超过100,一般情况下不会出现一次写操作写100个分区的情况,解决方法1:查看写入的数据是否异常,为啥会写100个分区,一般是按时间分区,是不是时间解析错误了。解决方案2:在user.xml配置文件中添加<max_partitions_per_insert_block>配置项

    相关文章

      网友评论

          本文标题:clickhouse常见的一些问题

          本文链接:https://www.haomeiwen.com/subject/izpxmrtx.html