場景說明
100 萬日活,每人每天 100 條日志,
每天總共的日志條數是 100 萬 * 100 條 = 1 億條(中型公司偏?。?/p>
1 億 / 24 小時 / 60 分 / 60 秒? =? 1150 條/每秒鐘。
每條日志大?。?.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 底層主要是順序寫,固態(tài)硬盤和機械硬盤的順序寫速度差不多。
建議選擇普通的機械硬盤。
每天總數據量:1 億條 * 1k ≈ 100g
100g * 副本 2 * 保存時間 3 天 / 0.7 ≈ 1T
建議三臺服務器硬盤總大小,大于等于 1T。
內存選擇
Kafka 內存組成: 堆內存 (Kafka 內部配置)+ 頁緩存(服務器內存)
1)Kafka 堆內存建議每個節(jié)點: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:第一個幸存區(qū)的大??;
- S1C:第二個幸存區(qū)的大小
- S0U:第一個幸存區(qū)的使用大??;
- S1U:第二個幸存區(qū)的使用大小
- EC:伊甸園區(qū)的大小;
- EU:伊甸園區(qū)的使用大小
- OC:老年代大?。?/li>
- OU:老年代使用大小
- MC:方法區(qū)大??;
- MU:方法區(qū)使用大小
- CCSC:壓縮類空間大小;
- CCSU:壓縮類空間使用大小
- YGC:年輕代垃圾回收次數;
- YGCT:年輕代垃圾回收消耗時間
- FGC:老年代垃圾回收次數;
- FGCT:老年代垃圾回收消耗時間
- GCT:垃圾回收消耗總時間;
?(3)根據 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%的數據在內存中就好。
????????每個節(jié)點頁緩存大小? = (分區(qū)數? *? 1g? *? 25%) /? 節(jié)點數。例如 10 個分區(qū),頁緩存大小 =(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給其他使用比如監(jiān)聽心跳等
剩下 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。文章來源:http://www.zghlxwxcb.cn/news/detail-669189.html
一般百兆的網卡(100Mbps )、千兆的網卡(1000Mbps)、萬兆的網卡(10000Mbps)。文章來源地址http://www.zghlxwxcb.cn/news/detail-669189.html
到了這里,關于Kafka:硬件配置選擇和調優(yōu)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!