V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hsk9044
V2EX  ›  数据库

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

  •  
  •   hsk9044 · 2020-12-17 15:23:12 +08:00 · 2651 次点击
    这是一个创建于 1445 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    @DoctorCat 那个 issue 的情况似乎不太一样, 我这边查的实际上是没有在合并资源的
    aladdindingding
        11
    aladdindingding  
       2020-12-17 16:34:31 +08:00
    按照什么分区的 我们都是按照天分区的
    hsk9044
        12
    hsk9044  
    OP
       2020-12-17 16:58:48 +08:00
    @aladdindingding 按天+埋点类型, 不过目前分区也不多, 大概 100 个左右
    tikazyq
        13
    tikazyq  
       2020-12-17 17:08:49 +08:00
    不要叫老哥,叫老大
    lancelee01
        14
    lancelee01  
       2020-12-17 17:21:09 +08:00
    ClickHouse 进程占用 CPU 是因为里面有很多线程池,正常的行为活动吧,包括和 ZK 交互、检查旧分区这些。同时你是没有写入业务数据,不代表没有系统数据,比如 ClickHouse 的各种 log 表,自己会写,也会 merge,移除旧的数据判断。所以,占用 CPU 是正常行为,难不成你不进行操作,数据库就得装死冬眠吗。。。哈哈哈
    hsk9044
        15
    hsk9044  
    OP
       2020-12-17 17:22:14 +08:00
    @lancelee01 精辟
    f6x
        16
    f6x  
       2020-12-17 17:24:56 +08:00
    看曲线算平均值把. 有些 db 平时 cpu 很低, 突然一下子 300%才真是不能用.
    DoctorCat
        17
    DoctorCat  
       2020-12-17 17:56:57 +08:00
    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
       2020-12-17 17:59:53 +08:00
    @DoctorCat 我理解的第二个原因是开了 clickhouse 的集群复制, 实际上我这边只开用了单机
    DoctorCat
        19
    DoctorCat  
       2020-12-17 18:04:35 +08:00
    @hsk9044 那就只能 perf 看下了
    cholerae
        20
    cholerae  
       2020-12-17 19:57:11 +08:00
    perf 一下不就完了
    levelworm
        21
    levelworm  
       2020-12-18 05:24:18 +08:00 via Android
    数据量多大多频繁啊?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2710 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:29 · PVG 15:29 · LAX 23:29 · JFK 02:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.