docker的资源限制参数设置错误,导致的clickhouse性能瓶颈

33 篇文章 5 订阅
24 篇文章 1 订阅

使用场景

  • 我们使用docker作为服务的虚拟化工具,服务都部署在docker里
  • 我们使用docker-compose管理所有docker服务的配置文件
  • 针对某些服务,我们要限制这个docker服务容器占用的资源数量,例如cpu和内存
  • 在进行配置时,网上搜了一些文章,进行了设置,导致了本次错误(低级错误,还是要去官方网站学第一手知识)
  • 此次问题是在公司测试环境发现的,主要做一些功能测试,不用于性能测试,故只设置了很小的资源,反而发现了此问题
  • 出问题的是大数据组件clickhouse容器,针对clickhouse数据库的docker配置如下:
  clickhouse:
    image: yandex/clickhouse-server
    container_name: clickhouse
    ports:
      - 8123:8123
      - 9000:9000
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    deploy:
      resources:
        limits:
          cpus: "0.6"
          memory: 2G
    volumes:
      - ./volumes/ck/data:/var/lib/clickhouse
      - ./volumes/ck/log/:/var/log/clickhouse-server/
      - ./volumes/ck/etc/:/etc/clickhouse-server/
      - /etc/localtime:/etc/localtime
    restart: on-failure

问题现象

  • 之前是把clickhouse数据库,直接部署在服务器上,使用了近一年,没什么问题
  • 前段时间,为了统一部署环境,将clickhouse也使用docker部署,将配置和文件卷映射到服务器
  • 使用docker部署后发现,在写入和查询并发量不大的情况下,clickhouse查询较慢
  • 查看了query_log,发现10万条数据,就用了600ms,很不应该,按理说一亿条数据这么慢还差不多
  • 之前使用clickhouse存储大数据,也没遇到这么慢的。clickhouse查询时,会使用并行查询,10万条应该是毫秒级返回才对

解决处理

  • 和同事交流后,发现cpus参数设置不合理

  • 我之前看着网上的一些文章和翻译,以为这个数字要取小数,是一个比值,是 “服务器cpu总数量 x 比值”,为该docker容器使用的cpu数量(这是我的错误理解

  • 在同事建议下,去看了官方英文文档,果然,我理解错了,这个就是简单的指 cpu数量

  • 官方文档使用小技巧:是官方文档网站里的搜索框,输入英文关键词,基本就可以查找到想要的结果
    在这里插入图片描述

  • 官方文档地址:https://docs.docker.com/compose/compose-file/deploy/#cpus

cpus configures a limit or reservation for how much of the available CPU resources, as number of cores, a container can use.

  • 核心是这句number of cores,很明确,就是数量,案例是设置小数如0.6,是指0.6个cpu,对clickhouse来说,完全不够用。clickhouse并行计算和数据文件块压缩合并,都比较吃cpu,至少要给8个cpu,生产环境,最好是32cpu起
    -除了CPU, 还有一点需要说明的是,clickhouse也比较吃内存,它的内存使用限制要求大于16G,否则也可能存在性能瓶颈和各种意外的报错
  • 仍然贴一篇官方文档:https://clickhouse.com/docs/en/operations/tips#ram

danger
If your system has less than 16 GB of RAM, you may experience various memory exceptions because default settings do not match this amount of memory. The recommended amount of RAM is 32 GB or more. You can use ClickHouse in a system with a small amount of RAM, even with 2 GB of RAM, but it requires additional tuning and can ingest at a low rate.

  • 优化后配置为
   deploy:
      resources:
        limits:
          cpus: "8.0"
          memory: 16G
  • 查询飞快,问题解决了
  • 当然,针对生产环境,这个配置就不够用了。要针对自己的业务量,进行一个预估,申请足够的cpu和内存配置的服务器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坚持是一种态度

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值