我是Datastax cassandra的新手.在经历cassandra的安装过程时.建议关闭OS的交换区域.有没有人提供原因?它会影响任何操作系统级操作吗?
在生产中,如果您的数据库使用交换,则性能会非常差.在一个Cassandra节点中,你最好让一个节点完全向下,而不是允许它在交换中跛行.
确保您永远不会进入交换的最简单方法是简单地禁用它.
如果您不禁用交换空间,则在操作系统级别出现内存不足(当cassandra mmap用完地址空间时)问题时,操作系统将尝试获取一部分JVM,这实际上是在尝试清除JVM默认情况下是通过JNI进行的。现在,由于丢失了其堆内存的一部分,JVM的速度降低了。现在,GC将与具有较少堆内存的cassandra写操作一起发生。这会降低cassandra节点的整体性能,并逐渐在OS级别上没有剩余内存的某个时间点将其杀死。
这就是为什么他们建议您两件事。
捆绑jna.jar。如果有针对Cassandra的mmap的GC操作,则所有操作均由Java代码完成,而不是由Cassandra中默认提供的JNI部分完成。因此,它避免了本机操作时JNI尝试存储的部分地址空间。
禁用交换空间。性能低下的cassandra节点将减慢其客户端的所有操作。甚至复制到该节点的速度也会变慢,因此您读/写的速度将比您想象的要慢。当发生此类“内存不足”时,节点应死亡并重新启动,而不是占用一部分JVM来减慢整个过程。