Kafka 硬件配置选择
1.1 场景说明
100 万日活,每人每天 100 条日志,每天总共的日志条数是 100 万 * 100 条 = 1 亿条。
1 亿/24 小时/60 分/60 秒 = 1150 条/每秒钟。
每条日志大小:0.5k - 2k(取 1k)。
1150 条/每秒钟 * 1k ≈ 1m/s 。
高峰期每秒钟:1150 条 * 20 倍 = 23000 条。
每秒多少数据量:20MB/s。
1.2 服务器台数选择
服务器台数= 2 * (生产者峰值生产速率 * 副本 / 100) + 1 = 2 * (20m/s * 2 / 100) + 1 = 3 台
建议 3 台服务器。
1.3 磁盘选择
kafka 底层主要是顺序写,固态硬盘和机械硬盘的顺序写速度差不多。
建议选择普通的机械硬盘。
每天总数据量:1 亿条 * 1k ≈ 100g 100g * 副本 2 * 保存时间 3 天 / 0.7 ≈ 1T
建议三台服务器硬盘总大小,大于等于 1T。
1.4 内存选择
Kafka 内存组成:堆内存 + 页缓存
1)Kafka 堆内存建议每个节点:10g ~ 15g
在 kafka-server-start.sh 中修改
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx10G -Xms10G"
fi
(1)查看 Kafka 进程号
[atguigu@hadoop102 kafka]$ jps
2336 Kafka
5409 Jps
1886 QuorumPeerMain
(2)根据 Kafka 进程号,查看 Kafka 的 GC 情况
[atguigu@hadoop102 kafka]$ jstat -gc 2336 1s 10
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT
0.0 6144.0 0.0 6144.0 104448.0 91136.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 92160.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 92160.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 92160.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 92160.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 92160.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 92160.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 93184.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 93184.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
0.0 6144.0 0.0 6144.0 104448.0 93184.0 1986560.0 146652.5 47176.0 44356.1 6780.0 5522.1 13 1.700 0 0.000 4 0.019 1.719
参数说明:
S0C:第一个幸存区的大小;S1C:第二个幸存区的大小;
S0U:第一个幸存区的使用大小; S1U:第二个幸存区的使用大小;
EC:伊甸园区的大小; EU:伊甸园区的使用大小;
OC:老年代大小; OU:老年代使用大小;
MC:方法区大小; MU:方法区使用大小;
CCSC:压缩类空间大小; CCSU:压缩类空间使用大小;
YGC:年轻代垃圾回收次数; YGCT:年轻代垃圾回收消耗时间;
FGC:老年代垃圾回收次数; FGCT:老年代垃圾回收消耗时间;
GCT:垃圾回收消耗总时间;
(3)根据 Kafka 进程号,查看 Kafka 的堆内存
[atguigu@hadoop102 kafka]$ jhsdb jmap --heap --pid 2336
Attaching to process ID 2336, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.0.14.1+1-LTS
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 = 163012336 (155.46067810058594MB)
free = 1984471312 (1892.539321899414MB)
7.590853422880173% used
G1 Young Generation:
Eden Space:
regions = 6
capacity = 106954752 (102.0MB)
used = 6291456 (6.0MB)
free = 100663296 (96.0MB)
5.882352941176471% used
Survivor Space:
regions = 6
capacity = 6291456 (6.0MB)
used = 6291456 (6.0MB)
free = 0 (0.0MB)
100.0% used
G1 Old Generation:
regions = 145
capacity = 2034237440 (1940.0MB)
used = 150429424 (143.46067810058594MB)
free = 1883808016 (1796.539321899414MB)
7.394880314463193% used
2)页缓存:页缓存是 Linux 系统服务器的内存。我们只需要保证 1 个 segment(1g)中 25%的数据在内存中就好。
每个节点页缓存大小 =(分区数 * 1g * 25%)/ 节点数。例如 10 个分区,页缓存大小 =(10 * 1g * 25%)/ 3 ≈ 1g
建议服务器内存大于等于 11G。
1.5 CPU 选择
num.io.threads = 8:负责写磁盘的线程数,整个参数值要占总核数的 50%。
num.replica.fetchers = 1:副本拉取线程数,这个参数占总核数的 50%的 1/3。
num.network.threads = 3:数据传输线程数,这个参数占总核数的 50%的 2/3。
建议 32 个 cpu core。
1.6 网络选择
网络带宽 = 峰值吞吐量 ≈ 20MB/s 选择千兆网卡即可。
100Mbps 单位是 bit;10M/s 单位是 byte ; 1byte = 8bit,100Mbps/8 = 12.5M/s。
一般百兆的网卡(100Mbps )、千兆的网卡(1000Mbps)、万兆的网卡(10000Mbps)。
本文作者:我係死肥宅
本文链接:https://www.cnblogs.com/iamfatotaku/p/16212562.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步