java - Apache Kafka 交换内存使用情况

标签 java apache-kafka heap-memory

我有一个由 10 台机器组成的 Kafka 集群。

Kafka 的 xmx 配置现在为 8g。

但是,在检查每个 Kafka 进程后,我确认正在使用 1g ~ 3g 的交换内存。

我知道 Kafka 不需要使用大堆。

这种情况需要增加Kafka的xmx吗?

或者还有其他解决方案吗?

此外,操作系统当前的交换设置为 1。

最佳答案

操作系统交换性是一件很难确定的事情。我的配置中,所有内容都在不到一半的可用内存上运行,并且操作系统仍然决定将几 GB 内存交换到磁盘。我还尝试过完全关闭交换性,但我发现性能没有任何改善。

我的建议是不要考虑操作系统交换性。确实,Kafka 不需要很大的 JVM 堆,但它会使用操作系统中任何可用的堆外 RAM 作为页面缓存,以从 RAM 中提供尽可能多的数据/消息。我的建议是使用 -Xms-Xmx 将 JVM 大小设置为相同的值(8GB 对于大多数情况来说应该足够了),并保留剩余的可用 RAM让 Kafka 用作堆外内存,并用于操作系统开销。

关于java - Apache Kafka 交换内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53064739/

相关文章:

elasticsearch - 如何从 Apache Flink 写入 Elasticsearch

ssl - 无法使用 SSL 找出 Kafka 中 inter.broker.listener.name 的设置

java - "java.lang.OutOfMemoryError: Java heap space"在 xml 文件上调用 FileUtils.readFileToString 时

java - GAE 数据存储增量 ID

java - 使用 'adb backup' 以编程方式备份​​应用程序

java - 查找数组中两个最小值的索引

ssl - 如何最好地解决 SSL 加密对零拷贝优化的不利影响

c - 这段代码是未定义的行为吗?操作系统和堆怎么样?操作系统如何处理堆栈?

java - 为什么 Garbage-First (G1) 针对具有大内存的多处理器机器

java - 如何在 Selenium IDE 中为 Web 目标选择正确的操作