繁体   English   中英

为什么在zookeeper和kafka中交换不是一个好主意?

[英]Why swapping is not a good idea in zookeeper and kafka?

我已阅读说明书

do not use swap

在zookeeper和kafka都有。 我知道kafka依赖于页面缓存来保持顺序日志的一部分缓存在内存中,即使它们被写入磁盘。

但无法理解如何交换可以伤害zk和kafka。

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

此外, 对于像Kafka和ZooKeeper这样的JVM进程交换可能特别糟糕 ,引用:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM