clickhouse压测

news/2024/9/23 10:54:34

Clickhouse压测

压测工具:

  • jemter

  • 服务器监控脚本

sql准备:

  • 简单sql
select * from tb_plan_student where plan_id=1122980766105344 and region_id=330302  limit 10
  • 简单sql---部分字段
select student_id,student_name from tb_plan_student where plan_id=1122980766105344 and region_id=330302  limit 10
  • 复杂sql
SELECT region_id AS area,is_check,COUNT( id ) AS countFROMtb_plan_studentWHEREis_deleted = 0AND is_count = 0AND plan_id = 1125194023755520AND city_id = 330300GROUP BY region_id,is_check
  • 插入sql
  INSERT INTO tb_plan_student_test(id, plan_id, province_id, city_id, region_id, student_id, student_base_id,student_name, pym, idcard, nationality, pro_code, birth, age, org_id, org_name, sex,prefx, class_id, class_year, class_name, grade_id, grade_name, eye_is_check, is_check,is_count, stu_code, remark, is_deleted, creator, operator, create_time, update_time,identity, stu_type, not_status, parent_name, parent_phone, parent_is_agree)VALUES (1122980769914624, 1122980766105344, 330000, 330300, 330302, 291941505000673280, 291941505000673280, '林可',     'lk', '330381201707033343', null, null, '2017-07-03', 6.0, 106, '温十六幼白鹭园区', '2', 1, 291941503981457408,2020, '01', 921830381248259, '中班', 0, 0, 0, 'G330381201707033343', null, 0, 1115178929700608,1115178929700608, '2023-05-06 14:30:14', '2023-05-06 14:30:14', 1, 1, 0, '', '', 0);

测试前服务器状况:

执行时间-------------------------------------------------2023-06-06_17:41:38
用户空间占用CPU百分比:0.8
内核空间占用CPU百分比:0.7
空闲CPU百分比:97.8
CPU 1分钟前到现在的负载平均值:0.20
内存使用率=14.13
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度m/s:0.00
每秒向sda设备发起的写请求速度m/s:0.00
网卡:ens192 每秒接收的数据量kb:4.81
网卡:ens192 每秒发送的数据量kb:1.44

场景一 :简单的sql,100个线程无限执行

执行时间-------------------------------------------------2023-06-06_17:42:42
用户空间占用CPU百分比:91.0
内核空间占用CPU百分比:7.5
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:6.11
内存使用率=21.58
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度m/s:0.00
每秒向sda设备发起的写请求速度m/s:0.02
每秒向sdb设备发起的读请求速度m/s:0.03
每秒向sdb设备发起的写请求速度m/s:0.00
网卡:ens192 每秒接收的数据量kb:41.03
网卡:ens192 每秒发送的数据量kb:114.73
网卡:docker0 每秒接收的数据量kb:104.05
网卡:docker0 每秒发送的数据量kb:33.81
执行时间-------------------------------------------------2023-06-06_17:43:25
用户空间占用CPU百分比:92.4
内核空间占用CPU百分比:17.4
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:40.51
内存使用率=21.46
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度m/s:0.00
每秒向sda设备发起的写请求速度m/s:0.00
每秒向sdb设备发起的读请求速度m/s:0.00
每秒向sdb设备发起的写请求速度m/s:0.00
网卡:ens192 每秒接收的数据量kb:39.57
网卡:ens192 每秒发送的数据量kb:114.33
网卡:docker0 每秒接收的数据量kb:92.68
网卡:docker0 每秒发送的数据量kb:37.05

场景二 :简单的sql,50个线程无限执行

执行时间-------------------------------------------------2023-06-06_17:52:07
用户空间占用CPU百分比:90.1
内核空间占用CPU百分比:9.8
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:7.96
内存使用率=21.64
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度m/s:0.00
每秒向sda设备发起的写请求速度m/s:0.51
每秒向sdb设备发起的读请求速度m/s:0.00
每秒向sdb设备发起的写请求速度m/s:0.00
网卡:ens192 每秒接收的数据量kb:40.85
网卡:ens192 每秒发送的数据量kb:104.92
网卡:docker0 每秒接收的数据量kb:103.14
网卡:docker0 每秒发送的数据量kb:155.97
执行时间-------------------------------------------------2023-06-06_17:52:18
用户空间占用CPU百分比:93.8
内核空间占用CPU百分比:8.3
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:23.79
内存使用率=22.08
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度m/s:0.00
每秒向sda设备发起的写请求速度m/s:0.00
每秒向sdb设备发起的读请求速度m/s:0.00
每秒向sdb设备发起的写请求速度m/s:0.00
网卡:ens192 每秒接收的数据量kb:146.70
网卡:ens192 每秒发送的数据量kb:690.29
网卡:docker0 每秒接收的数据量kb:809.32
网卡:docker0 每秒发送的数据量kb:257.86

执行时间-------------------------------------------------2023-06-08_18:05:34
用户空间占用CPU百分比:88.5
内核空间占用CPU百分比:7.5
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:50.17
内存使用率=30.88(后来清了系统缓存再次执行,内存使用率达到了30%,约增加5G内存)
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:34.53
网卡:ens192 每秒发送的数据量kb:130.11
网卡:docker0 每秒接收的数据量kb:84.13
网卡:docker0 每秒发送的数据量kb:31.24

场景三 :简单的sql,20个线程无限执行

执行时间-------------------------------------------------2023-06-07_09:31:28
用户空间占用CPU百分比:92.5
内核空间占用CPU百分比:9.8
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:13.13
内存使用率=21.76
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:40.32
网卡:ens192 每秒发送的数据量kb:106.18
网卡:docker0 每秒接收的数据量kb:95.13
网卡:docker0 每秒发送的数据量kb:41.10
执行时间-------------------------------------------------2023-06-07_09:31:39
用户空间占用CPU百分比:93.2
内核空间占用CPU百分比:8.2
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:21.37
内存使用率=21.85
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:44.64
网卡:ens192 每秒发送的数据量kb:99.94
网卡:docker0 每秒接收的数据量kb:103.90
网卡:docker0 每秒发送的数据量kb:39.05

执行时间-------------------------------------------------2023-06-08_18:10:32
用户空间占用CPU百分比:91.0
内核空间占用CPU百分比:8.9
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:22.28
内存使用率=23.30 (后来清了系统缓存再次执行,内存使用率达到了23%,约增加2.5G内存)
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:37.63
网卡:ens192 每秒发送的数据量kb:120.39
网卡:docker0 每秒接收的数据量kb:117.78
网卡:docker0 每秒发送的数据量kb:29.82

最后测了一下10个线程的情况,也已经达到了cpu瓶颈,吞吐量也能达到40了

场景四:简单sql---查询部分字段,50个线程无限执行

执行时间-------------------------------------------------2023-06-09_09:55:17
用户空间占用CPU百分比:91.5
内核空间占用CPU百分比:3.8
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:62.25
内存使用率=18.90
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:71.48
网卡:ens192 每秒发送的数据量kb:69.46
执行时间-------------------------------------------------2023-06-09_09:55:22
用户空间占用CPU百分比:95.5
内核空间占用CPU百分比:4.4
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:73.12
内存使用率=18.82
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:75.43
网卡:ens192 每秒发送的数据量kb:69.58

场景五:复杂的sql,20个线程无限执行

执行时间-------------------------------------------------2023-06-07_09:50:16
用户空间占用CPU百分比:97.0
内核空间占用CPU百分比:4.6
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:19.26
内存使用率=15.66
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:5673.50
网卡:ens192 每秒接收的数据量kb:34.34
网卡:ens192 每秒发送的数据量kb:33.62
网卡:docker0 每秒接收的数据量kb:26.36
网卡:docker0 每秒发送的数据量kb:36.90
执行时间-------------------------------------------------2023-06-07_09:50:27
用户空间占用CPU百分比:98.5
内核空间占用CPU百分比:2.3
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:34.56
内存使用率=15.71
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:8488.00
网卡:ens192 每秒接收的数据量kb:19.03
网卡:ens192 每秒发送的数据量kb:25.34
网卡:docker0 每秒接收的数据量kb:27.93
网卡:docker0 每秒发送的数据量kb:32.50

场景六:复杂的sql,50个线程无限执行

执行时间-------------------------------------------------2023-06-09_09:20:13
用户空间占用CPU百分比:97.7
内核空间占用CPU百分比:3.0
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:95.12
内存使用率=17.38
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:35.36
网卡:ens192 每秒发送的数据量kb:22.73
网卡:docker0 每秒接收的数据量kb:16.97
网卡:docker0 每秒发送的数据量kb:28.70
执行时间-------------------------------------------------2023-06-09_09:20:23
用户空间占用CPU百分比:95.6
内核空间占用CPU百分比:4.6
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:115.71
内存使用率=17.58
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:2980.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:35.85
网卡:ens192 每秒发送的数据量kb:22.48
网卡:docker0 每秒接收的数据量kb:41.60
网卡:docker0 每秒发送的数据量kb:14.46

场景七:简单sql和复杂sql同时运行,都是设置20个线程无限执行

执行时间-------------------------------------------------2023-06-09_09:34:05
用户空间占用CPU百分比:93.8
内核空间占用CPU百分比:5.3
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:17.26
内存使用率=19.05
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:35.92
网卡:ens192 每秒发送的数据量kb:74.24
网卡:docker0 每秒接收的数据量kb:55.72
网卡:docker0 每秒发送的数据量kb:31.46
执行时间-------------------------------------------------2023-06-09_09:34:16
用户空间占用CPU百分比:92.4
内核空间占用CPU百分比:9.2
空闲CPU百分比:0.0
CPU 1分钟前到现在的负载平均值:20.85
内存使用率=19.30
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:217.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:36.82
网卡:ens192 每秒发送的数据量kb:62.53
网卡:docker0 每秒接收的数据量kb:58.02
网卡:docker0 每秒发送的数据量kb:34.64

场景八:插入数据,20个线程无限执行

执行时间-------------------------------------------------2023-06-07_10:01:23
用户空间占用CPU百分比:3.6
内核空间占用CPU百分比:5.9
空闲CPU百分比:88.7
CPU 1分钟前到现在的负载平均值:0.74
内存使用率=14.49
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:5272.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:180.87
网卡:ens192 每秒发送的数据量kb:74.71
网卡:docker0 每秒接收的数据量kb:67.17
网卡:docker0 每秒发送的数据量kb:204.51
执行时间-------------------------------------------------2023-06-07_10:01:34
用户空间占用CPU百分比:8.1
内核空间占用CPU百分比:4.4
空闲CPU百分比:88.1
CPU 1分钟前到现在的负载平均值:0.63
内存使用率=14.50
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:15212.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:ens192 每秒接收的数据量kb:201.88
网卡:ens192 每秒发送的数据量kb:58.15
网卡:docker0 每秒接收的数据量kb:59.10
网卡:docker0 每秒发送的数据量kb:183.56

场景九:简单sql---查询部分字段,50个线程无限执行(cpu限制成2核)

执行时间-------------------------------------------------2023-06-12_15:48:30
用户空间占用CPU百分比:24.6
内核空间占用CPU百分比:2.2
空闲CPU百分比:73.2
CPU 1分钟前到现在的负载平均值:26.89
内存使用率=13.85
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:veth70b4f11 每秒接收的数据量kb:0.00
网卡:veth70b4f11 每秒发送的数据量kb:0.00
执行时间-------------------------------------------------2023-06-12_15:48:37
用户空间占用CPU百分比:23.9
内核空间占用CPU百分比:1.4
空闲CPU百分比:73.0
CPU 1分钟前到现在的负载平均值:32.51
内存使用率=13.81
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:0.00
网卡:veth70b4f11 每秒接收的数据量kb:0.00
网卡:veth70b4f11 每秒发送的数据量kb:0.00

场景九:简单sql---查询所有字段,50个线程无限执行(cpu限制成2核)

执行时间-------------------------------------------------2023-06-12_15:51:53
用户空间占用CPU百分比:0.8
内核空间占用CPU百分比:1.5
空闲CPU百分比:97.8
CPU 1分钟前到现在的负载平均值:1.84
内存使用率=12.20
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:104.00
每秒向sdb设备发起的写请求速度k/s:1087.00
网卡:veth70b4f11 每秒接收的数据量kb:0.00
网卡:veth70b4f11 每秒发送的数据量kb:0.00
执行时间-------------------------------------------------2023-06-12_15:52:00
用户空间占用CPU百分比:22.1
内核空间占用CPU百分比:4.3
空闲CPU百分比:71.9
CPU 1分钟前到现在的负载平均值:13.95
内存使用率=18.12
获取磁盘I/O统计信息
每秒向sda设备发起的读请求速度k/s:0.00
每秒向sda设备发起的写请求速度k/s:0.00
每秒向sdb设备发起的读请求速度k/s:0.00
每秒向sdb设备发起的写请求速度k/s:2100.00
网卡:veth70b4f11 每秒接收的数据量kb:0.00
网卡:veth70b4f11 每秒发送的数据量kb:0.00

image-20230612155304994

clickhouse磁盘占用情况

1700万行数据(tb_plan_student约40个字段),原始数据占用0.6G的空间(相同数据在postgre存储需要6.5个G空间)

总结

  • clickhouse的压缩比非常高,所以磁盘占用空间很小

  • clickhouse会尽最大可能去占用cpu,所以在10个线程循环调用的时候已经把8核的cpu打满了,吞吐量已经达到了40次/秒的瓶颈。

  • 由于吞吐量没有太高,所以网络带宽和磁盘IO都达不到瓶颈

  • 经测试,内存使用率和返回的字段数量息息相关,返回字段多的时候(select *)内存使用率增加了15%,约5个G。返回两三个字段的时候,内存使用率增加了4%-6%,内存使用率大大降低,同时吞吐量也能得到50%的提升。

  • 后面把clickhouse的cpu限制在两核,经测试,吞吐量降成了1/4左右,吞吐量几乎与核数是成正比的。

​ 以上是基于单机clickhouse的压测结果。压测线程数从10个开始以后,一直增加到100个,ck的吞吐量都已经得不到提升,压力主要是在cpu,这也说明了ck不适合高并发查询的场景。就目前我们公司的场景而言,只是用于大屏和首页的查询,并非高并发场景,是可以使用clickhouse的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/63684.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

国产化:TongRDS替代Redis

背景: 国产化要求,内存数据缓存中间件要换国产产品,这里简单记录一下替换过程,项目是 spring boot 微服务结构。官方文档比较全,这里只是个人记录的最简化的版本。1 安装 企业版 TongRDS 分为2个节点,我拿到的版本就是企业版,所以下面的都默认是企业版。分为中心节点和服…

阿里云mysql数据库服务器错误怎么回事

阿里云MySQL数据库服务器错误可能由多种因素造成,以下是一些常见的原因及解决方法:网络配置错误:检查服务器的网络配置,确保防火墙设置允许来自客户端的连接请求。 确认IP地址或域名解析正确,且客户端能够通过网络访问到数据库服务器。MySQL服务未启动:确认MySQL服务已经…

数据库连接错误:原因与解决方案

数据库连接错误可能由多种因素引起,下面列出了一些常见的原因及其解决方案: 常见原因及解决方案配置错误原因:数据库连接字符串中的参数错误,如主机名/IP地址、端口号、数据库名称、用户名或密码不正确。 解决方法:检查并确认连接字符串中的所有参数都正确无误。网络问题原…

淘宝商品评论API:电商数据的宝库

淘宝商品评论API是淘宝开放平台提供的一项服务,它允许开发者获取商品的用户评价信息,包括评分、评论文本、图片和视频等。这些数据对于商家来说是一个宝贵的资源,因为它们直接反映了消费者的真实感受和需求。实时分析用户反馈的重要性 提升客户满意度:通过实时分析用户反馈…

2 用户注册

创建用户模块应用在apps包下创建子应用 users python ../manage.py startapp users注册模块应用 INSTALLED_APPS=[ ... apps.users ]

Docker nsenter 命令使用以及lsns命令(需要安装utrace包)

查看容器对应宿主机上面的pid,容器技术的实质是进程,并没有完整的操作系统,就相当于在主机上面fork了一个子进程,通过docker daemon去fork一个子进程,这个子进程是可以在主机上面看到其pid的。 $ docker inspect -f {{.State.Pid}} 容器名或者容器id 如下:$ docker insp…

Js DOM(2)

(1).在DOM将各个标签分成很多类,实现了编程对象进行管理.通过id,name,class,等等的方式可以快速获取到对象. (2).获取对象之后可以对对象的各个属性进行修改,从而实现页面的调整,下面是一个样例开关灯,和全选反选 (3)这需要用到事件的监听功能实现监听有两种方式: a.给对象的属…