kafka学习之五_多个磁盘的性能验证
kafka学习之五_多个磁盘的性能验证
背景
周末在家学习kafka
上午验证了grafana+kafka_exporter的监控
下午想着验证一把性能相关. kafka学习之三里面,有成套的脚本.
我这边想起来之前还有一个机器, 是四个单盘HDD, 我可以直接进行使用和验证.
测试思路
计划创建四个partition的topic进行测试
首先仅使用第一个磁盘进行验证
测试完删除掉, 重新初始化, log,dirs 增加多个分区的的挂载路径.
然后进行相关的测试验证
测试结果分析
自己尝试进行了一些验证.
发现1块磁盘和四块磁盘, 如果使用一个producer-perf 进行测试时, 测试结果差异性不是很大.
可能跟CPU和磁盘的性能压力都有关系.
如果开启多个topic, 同时使用多个 producer-perf进行测试时. 总体的吞吐量, 四块硬盘比一块硬盘大约高50%
压测的通知开启 iostat 验证
单盘时压力都在 sdc 上面
四块盘时 压力其实不是非常平均, 这也是造成压测结果不是线性提升的很大原因.
单盘时四个topic 同时压测.总计为: 96.99
四盘时四个topic 同时压测.总计为: 140.78
总体的性能比率为: 45%
磁盘信息
/dev/sdc ext4 1.8T 539G 1.2T 31% /hdd1
/dev/sdf xfs 1.9T 4.6G 1.9T 1% /hdd4
/dev/sde xfs 1.9T 1.9G 1.9T 1% /hdd3
/dev/sdd xfs 1.9T 380G 1.5T 21% /hdd2
配置文件的差异
第一次测试时:
log.dirs=/hdd1/kafkahdd
第二次测试时
log.dirs=/hdd1/kafkahdd2,/hdd2/kafkahdd2,/hdd3/kafkahdd2,/hdd4/kafkahdd2
注意: 如果是四个目录时 会这样:
Formatting /hdd1/kafkahdd2 with metadata.version 3.5-IV2.
Formatting /hdd2/kafkahdd2 with metadata.version 3.5-IV2.
Formatting /hdd3/kafkahdd2 with metadata.version 3.5-IV2.
Formatting /hdd4/kafkahdd2 with metadata.version 3.5-IV2.
初始化和创建topic
cd /root/kafka_2.13-3.5.0
bin/kafka-server-stop.sh config/kraft/server.properties
bin/kafka-storage.sh format -t 7ONT3dn3RWWNCZyIwLrEqg -c config/kraft/server.properties
bin/kafka-server-start.sh -daemon config/kraft/server.properties
bin/kafka-topics.sh --create --command-config config/sasl.conf --replication-factor 1 --partitions 4 --topic zhaobsh01 --bootstrap-server 127.0.0.1:9093
测试命令
# 生产者测试
bin/kafka-producer-perf-test.sh --num-records 200000 --record-size 1024 --throughput -1 --producer.config config/sasl.conf --topic zhaobsh01 --print-metrics --producer-props bootstrap.servers=127.0.0.1:9093
# 单盘时的测试结果
200000 records sent, 36812.074360 records/sec (35.95 MB/sec), 638.59 ms avg latency, 950.00 ms max latency, 680 ms 50th, 899 ms 95th, 937 ms 99th, 946 ms 99.9th.
# 四盘时的测试结果
200000 records sent, 36172.906493 records/sec (35.33 MB/sec), 646.08 ms avg latency, 971.00 ms max latency, 705 ms 50th, 909 ms 95th, 952 ms 99th, 968 ms 99.9th.
# 消费者测试
bin/kafka-consumer-perf-test.sh --fetch-size 10000 --messages 2000000 --topic zhaobsh01 --consumer.config config/sasl.conf --print-metrics --bootstrap-server 127.0.0.1:9093
# 单盘时的测试结果
2023-06-24 14:03:49:723, 2023-06-24 14:04:13:453, 195.3125, 8.2306, 200000, 8428.1500, 4282, 19448, 10.0428, 10283.8338
# 四盘时的测试结果
2023-06-24 14:14:20:733, 2023-06-24 14:14:44:324, 195.3125, 8.2791, 200000, 8477.8093, 4889, 18702, 10.4434, 10694.0434
# 增加四盘时 增加io_threads 到16, network到6
# 生产者测试
200000 records sent, 37622.272385 records/sec (36.74 MB/sec), 589.76 ms avg latency, 889.00 ms max latency, 587 ms 50th, 843 ms 95th, 876 ms 99th, 885 ms 99.9th.
# 消费者测试
2023-06-24 14:25:03:258, 2023-06-24 14:25:26:604, 195.3125, 8.3660, 200000, 8566.7780, 3779, 19567, 9.9817, 10221.2909
四个topic同时测试时的情况
# 单一磁盘时
grep -ir "200000 records sent"
1.txt:200000 records sent, 24573.043371 records/sec (24.00 MB/sec), 977.14 ms avg latency, 1330.00 ms max latency, 995 ms 50th, 1263 ms 95th, 1313 ms 99th, 1324 ms 99.9th.
2.txt:200000 records sent, 24919.013207 records/sec (24.33 MB/sec), 966.64 ms avg latency, 1309.00 ms max latency, 1001 ms 50th, 1247 ms 95th, 1289 ms 99th, 1304 ms 99.9th.
3.txt:200000 records sent, 24479.804162 records/sec (23.91 MB/sec), 940.11 ms avg latency, 1281.00 ms max latency, 992 ms 50th, 1244 ms 95th, 1268 ms 99th, 1276 ms 99.9th.
4.txt:200000 records sent, 25348.542459 records/sec (24.75 MB/sec), 847.37 ms avg latency, 1425.00 ms max latency, 821 ms 50th, 1274 ms 95th, 1328 ms 99th, 1335 ms 99.9th.
# 四块磁盘时
grep -ir "200000 records sent"
1.txt:200000 records sent, 38044.512079 records/sec (37.15 MB/sec), 545.91 ms avg latency, 895.00 ms max latency, 572 ms 50th, 653 ms 95th, 663 ms 99th, 667 ms 99.9th.
2.txt:200000 records sent, 34668.053389 records/sec (33.86 MB/sec), 621.67 ms avg latency, 868.00 ms max latency, 658 ms 50th, 810 ms 95th, 847 ms 99th, 851 ms 99.9th.
3.txt:200000 records sent, 37383.177570 records/sec (36.51 MB/sec), 584.06 ms avg latency, 828.00 ms max latency, 594 ms 50th, 747 ms 95th, 761 ms 99th, 767 ms 99.9th.
4.txt:200000 records sent, 34059.945504 records/sec (33.26 MB/sec), 562.29 ms avg latency, 1297.00 ms max latency, 566 ms 50th, 796 ms 95th, 808 ms 99th, 812 ms 99.9th.
四个topic同时测试时的情况-第二次测试(提升有限)
# 单一磁盘时
grep -ir "800000 records sent"
1.txt:800000 records sent, 42413.317782 records/sec (41.42 MB/sec), 617.73 ms avg latency, 1633.00 ms max latency, 574 ms 50th, 926 ms 95th, 1613 ms 99th, 1630 ms 99.9th.
2.txt:800000 records sent, 42753.313382 records/sec (41.75 MB/sec), 619.57 ms avg latency, 1315.00 ms max latency, 586 ms 50th, 939 ms 95th, 1301 ms 99th, 1310 ms 99.9th.
3.txt:800000 records sent, 45300.113250 records/sec (44.24 MB/sec), 571.20 ms avg latency, 1321.00 ms max latency, 564 ms 50th, 841 ms 95th, 1299 ms 99th, 1315 ms 99.9th.
4.txt:800000 records sent, 43773.254541 records/sec (42.75 MB/sec), 596.18 ms avg latency, 1329.00 ms max latency, 570 ms 50th, 931 ms 95th, 1320 ms 99th, 1326 ms 99.9th.
# 四块磁盘时
grep -ir "800000 records sent"
1.txt:800000 records sent, 47292.504138 records/sec (46.18 MB/sec), 571.88 ms avg latency, 924.00 ms max latency, 580 ms 50th, 814 ms 95th, 900 ms 99th, 918 ms 99.9th.
2.txt:800000 records sent, 46794.571830 records/sec (45.70 MB/sec), 551.35 ms avg latency, 1138.00 ms max latency, 510 ms 50th, 925 ms 95th, 1102 ms 99th, 1130 ms 99.9th.
3.txt:800000 records sent, 47092.064987 records/sec (45.99 MB/sec), 568.98 ms avg latency, 1095.00 ms max latency, 534 ms 50th, 862 ms 95th, 998 ms 99th, 1083 ms 99.9th.
4.txt:800000 records sent, 46114.825917 records/sec (45.03 MB/sec), 459.42 ms avg latency, 1374.00 ms max latency, 452 ms 50th, 959 ms 95th, 992 ms 99th, 1009 ms 99.9th.
所有测试脚本
bin/kafka-topics.sh --create --command-config config/sasl.conf --replication-factor 1 --partitions 4 --topic zhaobsh02 --bootstrap-server 127.0.0.1:9093
bin/kafka-topics.sh --create --command-config config/sasl.conf --replication-factor 1 --partitions 4 --topic zhaobsh03 --bootstrap-server 127.0.0.1:9093
bin/kafka-topics.sh --create --command-config config/sasl.conf --replication-factor 1 --partitions 4 --topic zhaobsh04 --bootstrap-server 127.0.0.1:9093
bin/kafka-topics.sh --create --command-config config/sasl.conf --replication-factor 1 --partitions 4 --topic zhaobsh05 --bootstrap-server 127.0.0.1:9093
nohup bin/kafka-producer-perf-test.sh --num-records 800000 --record-size 1024 --throughput -1 --producer.config config/sasl.conf --topic zhaobsh02 --print-metrics --producer-props bootstrap.servers=127.0.0.1:9093 >log/1.txt &
nohup bin/kafka-producer-perf-test.sh --num-records 800000 --record-size 1024 --throughput -1 --producer.config config/sasl.conf --topic zhaobsh03 --print-metrics --producer-props bootstrap.servers=127.0.0.1:9093 >log/2.txt &
nohup bin/kafka-producer-perf-test.sh --num-records 800000 --record-size 1024 --throughput -1 --producer.config config/sasl.conf --topic zhaobsh04 --print-metrics --producer-props bootstrap.servers=127.0.0.1:9093 >log/3.txt &
nohup bin/kafka-producer-perf-test.sh --num-records 800000 --record-size 1024 --throughput -1 --producer.config config/sasl.conf --topic zhaobsh05 --print-metrics --producer-props bootstrap.servers=127.0.0.1:9093 >log/4.txt &
grep -ir "800000 records sent"
kafka学习之五_多个磁盘的性能验证的更多相关文章
- 【kafka学习之五】kafka运维:kafka操作日志设置和主题删除
一.操作日志 首先附上kafka 操作日志配置文件:log4j.properties 根据相应的需要设置日志. #日志级别覆盖规则 优先级:ALL < DEBUG < INFO <W ...
- kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
- Kafka学习-简介
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.S ...
- [Big Data - Kafka] kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
- Apache Kafka学习 (一)
前言:最近公司开始要研究大数据的消息记录,于是开始研究kafka. 市面上kafka的书很少,有的也版本比较落后,于是仗着自己英文还不错,上官网直接学习. ^_^ 1. 开始 - 基本概念 学习一样东 ...
- Kafka学习之(六)搭建kafka集群
想要搭建kafka集群,必须具备zookeeper集群,关于zookeeper集群的搭建,在Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建博客有说明.需要具备两台以上装有zook ...
- Kafka学习(一)kafka指南(about云翻译)
kafka 权威指南中文版 问题导读 1. 为什么数据管道是数据驱动企业的一个关键组成部分? 2. 发布/订阅消息的概念及其重要性是什么? 第一章 初识 kafka 企业是由数据驱动的.我们获取信息, ...
- 大数据 -- kafka学习笔记:知识点整理(部分转载)
一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...
- Kafka学习笔记(三)——架构深入
之前搭建好了Kafka的学习环境,了解了具体的配置文件内容,并且测试了生产者.消费者的控制台使用方式,也学习了基本的API.那么下一步,应该学习一下具体的内部流程~ 1.Kafka的工作流程 大致的工 ...
- day 83 Vue学习之五DIY脚手架、webpack使用、vue-cli的使用、element-ui
Vue学习之五DIY脚手架.webpack使用.vue-cli的使用.element-ui 本节目录 一 vue获取原生DOM的方式 二 DIY脚手架 三 vue-cli脚手架的使用 四 we ...
随机推荐
- nginx在代理到upstream时转换http1.1为http1.0,长连接转为短连接
nginx在代理到upstream时的默认行为 最近准备用openresty替换nginx,替换的效果当然是需要保证效果和nginx一致,不然可能就会导致线上在用的服务出现问题. 替换成openres ...
- 16、Flutter Wrap组件 实现流布局
Wrap可以实现流布局,单行的Wrap跟Row表现几乎一致,单列的Wrap则跟Column表现几乎一致.但 Row与Column都是单行单列的,Wrap则突破了这个限制,mainAxis上空间不足时, ...
- SQLite3使用笔记(1)——查询
目录 1. 概述 2. 详论 2.1. 打开/关闭数据库 2.2. 数据查询 3. 参考 1. 概述 SQLite是一个嵌入式SQL数据库引擎.与大多数其他 SQL 数据库不同,SQLite 没有单独 ...
- RasaGPT对话系统的工作原理
RasaGPT 结合了 Rasa 和 Langchain 这 2 个开源项目,当超出 Rasa 现有意图(out_of_scope)的时候,就会执行 ActionGPTFallback,本质上就是利用 ...
- 为什么vacuum后表还是继续膨胀?
摘要: 对于更新和删除操作频繁的表,会存在大量垃圾数据,导致磁盘空间的浪费和查询扫描时额外的IO开销,需要定期执行清理操作(vacuum)来控制行存表以及表上索引的膨胀.本文将对vacuum的原理以及 ...
- 论文解读丨LayoutLM: 面向文档理解的文本与版面预训练
摘要:LayoutLM模型利用大规模无标注文档数据集进行文本与版面的联合预训练,在多个下游的文档理解任务上取得了领先的结果. 本文分享自华为云社区<论文解读系列二十五:LayoutLM: 面向文 ...
- 超90万个K8S实例可被发现暴露在公网上,14%位于中国
翻译: SEAL安全 原标题: Over 900,000 Kubernetes instances found exposed online 原文链接: https://www.bleepingcom ...
- 8款最佳实践,保护你的 IaC 安全!
基础设施即代码(IaC) 是一种快速发展的技术,利用软件开发原则和实践,用软件配置基础设施.与传统的 IT 基础架构相比,IaC 可以更高效地交付软件.自动化还解锁了弹性配置的能力,该功能可在不同的负 ...
- 字节跳动开源数据集成引擎 BitSail 的演进历程与能力解析
导读 BitSail 是字节跳动开源数据集成引擎,支持多种异构数据源间的数据同步,并提供离线.实时.全量.增量场景下全域数据集成解决方案,目前支撑了字节内部和火山引擎多个客户的数据集成需求.经过字节跳 ...
- 一个IT老码农的创业和生活(一)抑郁和自杀
2019年2月18日,离我的38周岁生日还差两个月,我的编程培训班"源栈"开张了. 在此之前,从我2002年大学毕业,6年时间,我先后做过英语教师.实习律师.公司法务.装修公司 ...