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

10

我对Datastax cassandra不熟悉。在阅读cassandra的安装过程时,建议关闭操作系统的交换空间(swap area)。有人能说明原因吗?这是否会影响操作系统级别的操作?

2个回答

7
在生产环境中,如果你的数据库使用交换空间,性能会非常差。在Cassandra节点环中,最好让一个节点完全停止而不是让它在交换空间中艰难地运行。
确保永远不进入交换空间的最简单方法是禁用它。

6
如果您不禁用交换空间,当操作系统面临内存不足(当cassandra的mmap使用完地址空间)的问题时,操作系统将尝试取走JVM的一部分,而默认情况下这实际上是通过JNI清除的。现在,JVM的速度变慢了,因为它的堆内存的一部分丢失了。现在,在较少的堆内存中,GC将与cassandra写操作同时进行。这会使cassandra节点的整体性能下降,并最终在OS级别没有更多内存可用时逐渐将其杀死。
这就是为什么他们建议你做两件事:
1. 捆绑 jna.jar。当对 cassandra 的 mmap 进行 GC 操作时,所有操作都由 java 代码完成,而不是 cassandra 默认提供的 JNI 部分。因此,它避免了 JNI 尝试在本地操作的情况下存储的地址空间的一部分。
2. 禁用交换空间。低效的 cassandra 节点将减缓其客户端的所有操作。即使是对此节点的复制也会变慢,因此您的读/写速度将比您想象的要慢。出现 Out of Memory 时,一个节点应该死亡并重新启动,而不是取走JVM的一部分,拖慢整个过程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接