Kafka:硬件配置选择和调优

这篇具有很好参考价值的文章主要介绍了Kafka:硬件配置选择和调优。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景说明

100 万日活,每人每天 100 条日志,

每天总共的日志条数是 100 万 * 100 条 = 1 亿条(中型公司偏小)。

1 亿 / 24 小时 / 60 分 / 60 秒  =  1150 条/每秒钟。

每条日志大小:0.5k - 2k(取 1k)(甚至更多根据实际情况)。

1150 条/每秒钟 * 1k ≈ 1m/s 。

高峰期(中午小高峰 下午 8 - 12):1m/s  *  20 倍  = 20m/s    最大 40m/s 。

每秒多少数据量:20MB/s。 

服务器台数选择 

 服务器台数 =  2   * (生产者峰值生产速率 * 副本 / 100) +  1

                    =  2   * (20m/s  *  2  /  100) +  1

                    =  3 台

建议 3 台服务器。

磁盘选择

kafka 底层主要是顺序写,固态硬盘和机械硬盘的顺序写速度差不多。

建议选择普通的机械硬盘。

每天总数据量:1 亿条 * 1k ≈ 100g

100g * 副本 2 * 保存时间 3 天 / 0.7 ≈ 1T

建议三台服务器硬盘总大小,大于等于 1T。

内存选择

Kafka 内存组成: 堆内存 (Kafka 内部配置)+ 页缓存(服务器内存)

1)Kafka 堆内存建议每个节点:10g ~ 15g

在bin目录下 kafka-server-start.sh 中修改

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
 export KAFKA_HEAP_OPTS="-Xmx10G -Xms10G"
fi

(1)查看 Kafka 进程号2321

jps


2321 Kafka
5255 Jps
1931 QuorumPeerMain

(2)根据 Kafka 进程号,查看 Kafka 的 GC 情况(主要看YGC

jstat -gc 2321 1s 10


S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 
0.0 7168.0 0.0 7168.0 103424.0 60416.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 60416.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 60416.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 60416.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 60416.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 61440.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 61440.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 61440.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 61440.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531
0.0 7168.0 0.0 7168.0 103424.0 61440.0 1986560.0 148433.5 52092.0 46656.1 6780.0 6202.2 13 0.531 0 0.000 0.531

参数说明:

  • S0C:第一个幸存区的大小;
  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小;
  • S1U:第二个幸存区的使用大小
  • EC:伊甸园区的大小;
  • EU:伊甸园区的使用大小
  • OC:老年代大小;
  • OU:老年代使用大小
  • MC:方法区大小;
  • MU:方法区使用大小
  • CCSC:压缩类空间大小;
  • CCSU:压缩类空间使用大小
  • YGC:年轻代垃圾回收次数;
  • YGCT:年轻代垃圾回收消耗时间
  • FGC:老年代垃圾回收次数;
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间;

 (3)根据 Kafka 进程号,查看 Kafka 的堆内存

kafka 内存设置,Kafka,kafka,分布式,硬件调优

jmap -heap 2321


Attaching to process ID 2321, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.212-b10

using thread-local object allocation.
Garbage-First (G1) GC with 8 thread(s)

Heap Configuration:

 MinHeapFreeRatio = 40
 MaxHeapFreeRatio = 70
 MaxHeapSize = 2147483648 (2048.0MB)
 NewSize = 1363144 (1.2999954223632812MB)
 MaxNewSize = 1287651328 (1228.0MB)
 OldSize = 5452592 (5.1999969482421875MB)
 NewRatio = 2
 SurvivorRatio = 8
 MetaspaceSize = 21807104 (20.796875MB)
 CompressedClassSpaceSize = 1073741824 (1024.0MB)
 MaxMetaspaceSize = 17592186044415 MB
 G1HeapRegionSize = 1048576 (1.0MB)

Heap Usage:
G1 Heap:
 regions = 2048
 capacity = 2147483648 (2048.0MB)
 used = 246367744 (234.95458984375MB)
 free = 1901115904 (1813.04541015625MB)
 11.472392082214355% used
G1 Young Generation:
Eden Space:
 regions = 83
 capacity = 105906176 (101.0MB)
 used = 87031808 (83.0MB)
 free = 18874368 (18.0MB)
 82.17821782178218% used
Survivor Space:
 regions = 7
 capacity = 7340032 (7.0MB)
 used = 7340032 (7.0MB)
 free = 0 (0.0MB)
 100.0% used
G1 Old Generation:
 regions = 147
 capacity = 2034237440 (1940.0MB)
 used = 151995904 (144.95458984375MB)
 free = 1882241536 (1795.04541015625MB)
 7.471886074420103% used

13364 interned Strings occupying 1449608 bytes.

2)页缓存:页缓存是 Linux 系统服务器的内存。我们只需要保证 1 个 segment(1g)中 25%的数据在内存中就好。

        每个节点页缓存大小  = (分区数  *  1g  *  25%) /  节点数。例如 10 个分区,页缓存大小 =(10 * 1g * 25%)/ 3 ≈ 1g

        建议服务器内存大于等于 11G。

CPU 选择

num.io.threads = 8 负责写磁盘的线程数,整个参数值要占总核数的 50%。

num.replica.fetchers = 1 副本拉取线程数,这个参数占总核数的 50%的 1/3。

num.network.threads = 3 数据传输线程数,这个参数占总核数的 50%的 2/3。

建议 32 个 cpu core。

这样的话留 8 个 cpu core给其他使用比如监听心跳等

剩下 24 个 cpu core

num.io.threads = 12

num.replica.fetchers = 4

num.network.threads = 8

网络选择

 网络带宽  =  峰值吞吐量 ≈ 20MB/s 选择千兆网卡即可。

100Mbps 单位是 bit;10M/s 单位是 byte ; 1byte = 8bit,100Mbps/8 = 12.5M/s。

一般百兆的网卡(100Mbps )、千兆的网卡(1000Mbps)、万兆的网卡(10000Mbps)。文章来源地址https://www.toymoban.com/news/detail-669189.html

到了这里,关于Kafka:硬件配置选择和调优的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • kafka安装配置(包含内外网设置)

    kafka安装配置(包含内外网设置)

    这里使用的kafka安装包:kafka_2.13-3.4.0.tgz kafka版本2.2+的版本,已经不需要依赖zookeeper来查看、创建topic,新版本使用--bootstrap-server替换老版本的--zookeeper-server。  配置完内网可以正常得去消费或者添加kfka数据 如果配置了advertised.listeners就无法正常访问消费 因为我的外网通讯虽然

    2024年02月06日
    浏览(6)
  • 【消息中间件MQ系列】Spring整合kafka并设置多套kafka配置

    【消息中间件MQ系列】Spring整合kafka并设置多套kafka配置

            圣诞节的到来,程序员不会收到圣诞老人的🎁,但可以自己满足一下自己,所以,趁着有时间,就记录一下这会儿撸了些什么代码吧!!!         因为业务原因,需要在系统内新增其他的kakfa配置使用,所以今天研究的是怎么在系统内整合多套kafka配置使用。

    2024年02月01日
    浏览(9)
  • 【Kafka系列 04】Kafka 性能调优,怎么做?

    【Kafka系列 04】Kafka 性能调优,怎么做?

    通常来说,调优是为了满足系统常见的非功能性需求。在众多的非功能性需求中,性能绝对是我们最关心的那一个。不同的系统对性能有不同的诉求,比如对于数据库用户而言,性能意味着请求的响应时间,用户总是希望查询或更新请求能够被更快地处理完并返回。 对 Kafk

    2024年03月13日
    浏览(5)
  • 【Kafka-3.x-教程】-【七】Kafka 生产调优、Kafka 压力测试

    【Kafka-3.x-教程】-【七】Kafka 生产调优、Kafka 压力测试

    【Kafka-3.x-教程】专栏: 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五】Kafka-监控-Eagle 【Kafka-3.x-教程】-【六】Kafka 外

    2024年01月25日
    浏览(9)
  • 【JVM的相关参数和调优】

    【JVM的相关参数和调优】

    这类此参数在jdk的各个版本之间很少会变化,基本不改变 java -version,查看当前电脑上的jdk的版本信息 java -help,查看java命令的各种选项和参数 java -showversion,相当于上述两者结合 4. jps,查看后台运行的 java 进程 Test 的进程 id 为 29636 5. jinfo,通过进程 id 查看正在运行的 jav

    2024年01月17日
    浏览(12)
  • 聊聊kafka client性能调优及kafka最佳实践

    聊聊kafka client性能调优及kafka最佳实践

    这里是 weihubeats ,觉得文章不错可以关注公众号 小奏技术 ,文章首发。拒绝营销号,拒绝标题党 最近在使用 kafka 的时候遇到了一些性能问题。 所以就打算研究下 kafka 相关的性能优化方案。 client 主要分两个 producer consumer producer 主要是有两个核心参数 batch.size linger.ms batch.s

    2024年02月03日
    浏览(10)
  • Kafka生产调优&源码

    Kafka生产调优&源码

    100 万日活,每人每天 100 条日志,每天总共的日志条数是 100 万 * 100 条 = 1 亿条。 1 亿/24 小时/60 分/60 秒 = 1150 条/每秒钟。 每条日志大小:0.5k - 2k(取 1k)。 1150 条/每秒钟 * 1k ≈ 1m/s 。 高峰期每秒钟:1150 条 * 20 倍 = 23000 条。 每秒多少数据量:20MB/s。 服务器台数= 2 * (生产

    2024年02月11日
    浏览(9)
  • Kafka集群调优+能力探底

    Kafka集群调优+能力探底

    我们需要对4个规格的kafka能力进行探底,即其可以承载的最大吞吐;4个规格对应的单节点的配置如下: 标准版: 2C4G 铂金版: 4C8G 专业版: 8C16G 企业版: 16C32G 另外,一般来讲,在同配置下,kafka的读性能是要优于写性能的,写操作时,数据要从网卡拷贝至堆内存,然后进行

    2024年02月05日
    浏览(8)
  • kafka基本架构以及参数调优

    Kafka是LinkedIn公司使用Scala语言开发,后来捐献给apache的项目。官网地址是http://kafka.apache.org。是常用的以高吞吐、可持久化、可水平扩展、支持流处理的分布式消息系统。 简单架构图: 生产端:逻辑层生产者将消息发到指定的topic中,物理层,生产者先找到相应的集群和对应

    2024年02月08日
    浏览(10)
  • flink双流ioin的大状态如何解决和调优

    Flink 中的双流 ioin 操作(双流连接)通常涉及大状态的处理,这可能导致一些性能和状态管理的挑战。以下是解决和调优 Flink 中双流 ioin 大状态的一些建议: 解决方案: 增大任务管理器的堆内存: 对于处理大状态的任务,增加 Flink 任务管理器的堆内存可以提供更多的内存

    2024年01月22日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包