hsk9044
V2EX  ›  数据库

有了解 clickhouse 这个数据库的老哥吗

  •  
  •   hsk9044 · Dec 17, 2020 · 3431 views
    This topic created in 1982 days ago, the information mentioned may be changed or developed.

    想把 clickhouse 用在公司游戏业务的埋点统计上. 数据库用起来效果很好, 但是给上司演示的时候发现 clickhouse-serv 这个进程会长时间占用 cpu 资源, 占用大概 5-10%的浮动, 我虚拟机的配置是 i7 8700k, 分了 12 个核心, 8G 内存, ssd 储存.

    我有了解过 clickhouse 的后台进程会不断进行合并, 排序数据, 但是实际情况是已经十几个小时没有更新过数据了, 但是这个进程还是不断占用 cpu 资源

    我知道这点资源其实根本不算什么, 但是公司服务器资源申请困难, 上司说找不到原因就不用这个数据库了

    Supplement 1  ·  Dec 18, 2020
    发现是因为开了 kafka 的引擎表, clickhouse 会开几个进程一直去消费队列. 因为我 kafka 是外网服务, 所以 cpu 大部分都是在等待 io 的情况. 所以才会出现长时间占用部分 cpu 但是进程又是 sleep 的状态
    21 replies    2020-12-18 05:24:18 +08:00
    newtype0092
        1
    newtype0092  
       Dec 17, 2020
    我们都是 mysql 数据过亿查询效率太低的时候才切到 clickhouse 上的,除了插入和修改成本比较高,需要从业务流程想办法规避,其他没遇到太大问题。
    alexanderchiu
        2
    alexanderchiu  
       Dec 17, 2020
    cpu 占用高,你是在一直插入数据吗?
    另外可以用阿里云的 clickhouse,后台会有开发为你提供技术建议和解决 cpu 占用过高问题
    hsk9044
        3
    hsk9044  
    OP
       Dec 17, 2020
    @newtype0092 mysql 应该是直接否了, 这边做的埋点业务基本不需要更新, 只要插入, 并且需要做复杂的聚合统计. 现在基本只有 clickhouse 能满足需求了, 但是这个占用资源的现象很费解
    hsk9044
        4
    hsk9044  
    OP
       Dec 17, 2020
    @alexanderchiu 不是 cpu 占用高, 而是 clickhouse 的后台进程长时间都会占用部分的 cpu 资源, 其实已经很久没插入数据库了
    monsterxx03
        5
    monsterxx03  
       Dec 17, 2020
    没用过, 不过一般思路是 gdb attach 上去看看有哪些活跃线程, 看看对应代码大致在做什么.
    这么点 CPU 占用率, 很正常啊, 就算没数据插入, 后台线程扫描也是有开销的, 看看有什么对应参数限制线程池大小或扫描平率.
    alexanderchiu
        6
    alexanderchiu  
       Dec 17, 2020   ❤️ 1
    @hsk9044 我记得如果即使是不插入数据的话,其实 mergeTree 还是会定期根据一定时间间隔来继续合并压缩数据。合并策略有按日期合并。可能这部分会一直占用一定的 cpu 。或者你可以去钉钉的 clickhouse 技术交流群咨询下,阿里云 clickhouse 页面有群号。
    alexanderchiu
        7
    alexanderchiu  
       Dec 17, 2020
    顺便打个广告哈哈 可以尝试试下阿里云的 clickhouse (利益相关:在他们的 ck 组实习过 他们会有技术专家专门为你定制方案 /排查问题
    dbskcnc
        9
    dbskcnc  
       Dec 17, 2020
    hsk9044
        10
    hsk9044  
    OP
       Dec 17, 2020
    @alexanderchiu 好的, 我去买一个看看

    @DoctorCat 那个 issue 的情况似乎不太一样, 我这边查的实际上是没有在合并资源的
    aladdindingding
        11
    aladdindingding  
       Dec 17, 2020
    按照什么分区的 我们都是按照天分区的
    hsk9044
        12
    hsk9044  
    OP
       Dec 17, 2020
    @aladdindingding 按天+埋点类型, 不过目前分区也不多, 大概 100 个左右
    tikazyq
        13
    tikazyq  
       Dec 17, 2020
    不要叫老哥,叫老大
    lancelee01
        14
    lancelee01  
       Dec 17, 2020
    ClickHouse 进程占用 CPU 是因为里面有很多线程池,正常的行为活动吧,包括和 ZK 交互、检查旧分区这些。同时你是没有写入业务数据,不代表没有系统数据,比如 ClickHouse 的各种 log 表,自己会写,也会 merge,移除旧的数据判断。所以,占用 CPU 是正常行为,难不成你不进行操作,数据库就得装死冬眠吗。。。哈哈哈
    hsk9044
        15
    hsk9044  
    OP
       Dec 17, 2020
    @lancelee01 精辟
    f6x
        16
    f6x  
       Dec 17, 2020
    看曲线算平均值把. 有些 db 平时 cpu 很低, 突然一下子 300%才真是不能用.
    DoctorCat
        17
    DoctorCat  
       Dec 17, 2020
    There are two types of background actions:

    merging of data parts;
    fetching of data part from replica.

    那是不是 issue 中 alexey-milovidov 提到的第二种原因呢?
    @hsk9044
    hsk9044
        18
    hsk9044  
    OP
       Dec 17, 2020
    @DoctorCat 我理解的第二个原因是开了 clickhouse 的集群复制, 实际上我这边只开用了单机
    DoctorCat
        19
    DoctorCat  
       Dec 17, 2020
    @hsk9044 那就只能 perf 看下了
    6ufq0VLZn0DDkL80
        20
    6ufq0VLZn0DDkL80  
       Dec 17, 2020
    perf 一下不就完了
    levelworm
        21
    levelworm  
       Dec 18, 2020 via Android
    数据量多大多频繁啊?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3059 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 99ms · UTC 02:35 · PVG 10:35 · LAX 19:35 · JFK 22:35
    ♥ Do have faith in what you're doing.