1.系统选择
linux 系统优于 windows 系统. 因为 linux 采用的是 epoll 模型,而 window 一般采用的是轮询方式,并且 linux 有 sendfile,传输效率高
2.磁盘规划
(1)普通的机械盘就能满足kafka的存储要求,因为 kafka使用的是顺序 I/O,它的速度比较快,但是 SSD 更好.
(2)JBOD 性价比优于 RAID.
3.磁盘容量规划需要考虑的点
(1)新增消息数
(2)消息的留存时间
(3)副本数
(4)是否启用压缩
(5)平均消息大小
4.内存规划
(1)尽量分配多的内存给操作系统的 page cache,因为 kafka 是把消息往系统缓存页上写的.
(2)不要给java 堆设置很大的内存,最好不要超过6GB
(3)最好设置 page cache 大于一个日志段,这样大多数消息能够在内存中被命中,效率高.
5.CPU规划
(1)尽量使用多核CPU,最好是多于 8核.因为Kafka对CPU的性能要求不是很高,但是多核能提高kafka的效率.
6.带宽规划
(1)不要使用跨机房的网络
(2)尽量使用高速网络
(3)根据带宽合理考虑系统中kafka的节点数量
7.典型配置
CPU24核
内存32GB
磁盘 1TB 7200 转 SAS 盘两块
带宽1GB/s
Socket Buffer 至少 64KB