日活量百万数据,Kafka硬件如何配置
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日活量百万数据,Kafka硬件如何配置相关的知识,希望对你有一定的参考价值。
生产者调优、硬件选择
假设:100万日活,每人每天 100 条日志,每天总共的日志条数是 100 万 * 100 条 = 1 亿条
处理速度=1亿/(24*3600s)=1150条/s
一条日志按1k计算,1150 条/每秒钟 * 1k ≈ 1m/s 。
高峰期每秒钟:1150 条 * 20 倍 = 23000 条。数据量:20MB/s
服务器台数选择:
服务器台数= 2 * (生产者峰值生产速率 * 副本 / 100)+ 1 = 2 * (20m/s * 2 / 100) + 1 = 3 台
磁盘选择:kafka 底层主要是顺序写,固态硬盘和机械硬盘的顺序写速度差不多
每天总数据量:1 亿条 * 1k ≈ 100g
100g * 副本 2 * 保存时间 3 天 / 0.7 ≈ 1T
建议三台服务器硬盘总大小,大于等于 1T
内存选择:堆内存 + 页缓存
kafka 堆内存建议每个节点:10g ~ 15g,默认是1g
堆内存修改方式
在 kafka-server-start.sh 中修改 if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx10G -Xms10G" fi
查看 Kafka 的 GC 情况,次数少则不用修改
#Kafka 进程号 jps #查看 Kafka 的 GC 情况 jstat -gc 进程 ls 10
查看内存使用率
jmap -heap 进程号
配置页缓存
页缓存是 Linux 系统服务器的内存。我们只需要保证 1 个 segment(1g)中 25%的数据在内存中就好 每个节点页缓存大小 =(分区数 * 1g * 25%)/ 节点数。例如 10 个分区,页缓存大小 =(10 * 1g * 25%)/ 3 ≈ 1g
CPU 选择
kafka中最占cpu的三个线程,总量建议占总cpu的2/3
- num.io.threads = 8 负责写磁盘的线程数,整个参数值要占总核数的 50%。
- num.replica.fetchers = 1 副本拉取线程数,这个参数占总核数的 50%的 1/3。
- num.network.threads = 3 数据传输线程数,这个参数占总核数的 50%的 2/3
以上是关于日活量百万数据,Kafka硬件如何配置的主要内容,如果未能解决你的问题,请参考以下文章