【问题标题】:Why swapping is not a good idea in zookeeper and kafka?为什么在 zookeeper 和 kafka 中交换不是一个好主意?
【发布时间】:2016-02-01 12:30:03
【问题描述】:

我已阅读说明

do not use swap

在 zookeeper 和 kafka 上都有。我知道 kafka 依靠页面缓存将部分顺序日志保留在内存中,即使它们被写入磁盘。

但无法理解交换如何损害 zk 和 kafka。

【问题讨论】:

    标签: apache-kafka apache-zookeeper


    【解决方案1】:

    交换可能会导致性能和稳定性问题;在您的示例中,您不希望 Linux 内核“错误地/意外地”交换您的 Kafka 或 ZooKeeper 进程。

    另外,swapping may be particularly bad for JVM processes 如 Kafka 和 ZooKeeper,引用:

    [The] JVM 通常不会执行完整的 GC 循环,直到它用完其允许的堆,因此您的大部分堆可能被尚未收集的垃圾占用。由于这些页面没有被触及(因为它们是垃圾,因此未被引用),操作系统很乐意将它们换掉。当 GC 最终运行时,你有一个荒谬的交换风暴,拉入所有这些页面,然后发现它们实际上充满了垃圾,应该被丢弃;这很容易让您的 GC 周期花费几分钟!

    因此建议通过将vm.swappiness 设置为0 来禁用交换,尽管对于某些操作系统,如 RHEL 6.5,这实际上应该是1(因为值0 的语义在这些操作系统上已更改) .请注意,可能仍会发生一些交换。

    以下链接可能会进一步阐明您的问题。他们分别解释了为什么要禁用 Hadoop 和 Elasticsearch 的交换,这与你应该禁用 Kafka 和 ZooKeeper 的交换的原因相同:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多