为什么需要在Datastax Cassandra中关闭交换?

时间:2014-04-10 13:00:22

标签: linux cassandra centos swap datastax

我是Datastax cassandra的新手。在经历cassandra的安装过程时。建议关闭OS的交换区域。有没有人提供原因?它会影响任何操作系统级别的操作吗?

2 个答案:

答案 0 :(得分:5)

在生产中,如果您的数据库使用交换,则性能会非常差。在一个Cassandra节点中,你最好让一个节点完全向下,而不是允许它在交换中跛行。

确保您永远不会进行交换的最简单方法是简单地禁用它。

答案 1 :(得分:4)

如果你没有禁用交换空间,当操作系统级别存在内存不足(地址空间被cassandra mmap用完)时,操作系统将尝试获取一部分JVM,而实际上是试图默认通过JNI清除它。现在,由于其堆内存丢失,您的JVM速度变慢。现在GC将与具有较少堆内存的cassandra写操作一起发生。这使得cassandra节点的整体性能下降,并逐渐将其杀死一个时间点,在OS级别上没有剩余内存。

这就是为什么他们建议你做两件事。

  1. 捆绑jna.jar。当对cassandra的mmap进行GC操作时,它全部由java代码完成,而不是在cassandra中默认发布的JNI部分。因此,它避免了JNI在本机操作时尝试存储的一部分地址空间。
  2. 禁用交换空间。低性能的cassandra节点将减慢其客户端的所有操作。即使复制到此节点也会减慢,因此您的读/写速度会比您想象的慢。当出现内存不足时,节点将死亡并重新启动,而不是采用一部分JVM来减慢整个过程。