Kafka 存储
文章目录
Tips
-
顺序写盘的速度不仅比随机写盘的速度快,而且也比随机写内存的速度快。kafka 在设计时采用了文件追加的方式来写入消息,即只能在日志文件的尾部追加新的消息,并且也不允许修改已经写入的消息,这种方式属于典型的顺序写盘的操作。
-
kafka 大量地使用了页缓存来提高读写文件的效率,而并没有怎么使用进程内的缓存。Java 对象的内存开销非常大,是真实数据的几倍,Java 的 GC 会随着堆内数据的增多而变得越来越慢。基于以上考虑,kafka 使用 Linux 为文件 I/O 提供的页缓存,而不是使用 Java 进程内的缓存。
-
Linux 系统提供了 swap 分区的功能,将非活跃的进程调入 swap 分区,以此把内存空出来让给活跃的进程。对于大量使用系统页缓存的 kafka 而言,应避免这种内存的交换,否则会对它各方面的性能产生较大的影响。vm.swappiness 参数控制 swap 分区的使用率,数值在 0 - 100,数值越大使用的越多,建议设置成1,不设置成 0 防止系统在内存耗尽时 kill 进程。