别错过这些美味的面包屑:Kafka磁盘、内存、CPU、网络选择

场景

每天总数据量100G,每天产生1亿条日志。

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

低谷每秒钟:50条/每秒钟。

高峰每秒钟:1150条*(2-20倍)=2300条-23000条/每秒钟。

每条日志大小:0.5K-2K(取1K)。

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

一、磁盘选择‍

1. 磁盘类型HDD VS SSD

(1)机械磁盘HDD一般机械磁盘寻道时间是毫秒级的,若有大量随机I/O,则将会出现指数级的延迟,但是Kafka是顺序读写的,因此对于机械磁盘的性能也是不弱的,所以基于成本问题可以考虑。

(2)固态硬盘SSD读写速度可观,没有成本问题可以考虑。

注意:kafka底层主要是顺序写,固态硬盘和机械硬盘的顺序写速度差不多。建议选择普通的机械硬盘。

2.磁盘大小

每天总数据量:1亿条*1K≈100G

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

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

二、内存选择

Kafka内存组成:堆内存+页缓存

1. Kafka堆内存:建议每个节点10G~15G

在kafka-server-start.sh中修改

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

(1)查看Kafka进程号

[xiao@hadoop102 kafka]$ jps2321 Kafka5255 Jps1931 QuorumPeerMain

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

[xiao@hadoop102 kafka]$ jstat -gc 2321 1s 1

参数说明:YGC年轻代垃圾回收次数。

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

[xiao@hadoop102 kafka]$ jmap -heap 2321… …Heap Usage:G1 Heap:   regions  = 2048   capacity = 2147483648 (2048.0MB)   used     = 246367744 (234.95458984375MB)   free     = 1901115904 (1813.04541015625MB)11.472392082214355% used

2、页缓存:

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

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

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

三、CPU选择‍

Kafka对CPU的要求不高,主要是用在对消息解压和压缩上。所以 CPU的性能不是在使用 Kafka的首要考虑因素。

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

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

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

建议24CPU,32个cpu core。‍

四、网络选择

网络吞吐量决定了Kafka能够处理的最大数据流量。它和磁盘是制约 Kafka 拓展规模的主要因素。对于生产者、消费者写入数据和读取数据都要瓜分网络流量。

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

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

一般百兆的网卡(100Mbps)、千兆的网卡(1000Mbps)、万兆的网卡(10000Mbps)。

五、总结

磁盘、内存、CPU和网络选择差一些的可能会影响Kafka的性能,如果选择最好的也可能造成资源的利用率不高,浪费资源,本文提供了选择Kafka的磁盘、内存、CPU和网络的思路,抓紧收藏吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值