我是 Datastax cassandra 的新手。在完成 cassandra 的安装过程时。建议关闭 OS 的交换区。有人提供原因吗?它会影响任何操作系统级别的操作吗?
问问题
5169 次
2 回答
8
在生产中,如果您的数据库使用交换,您的性能将非常糟糕。在 Cassandra 节点的环中,最好让一个节点完全关闭,而不是让它在交换中跛行。
确保您永远不会进入交换的最简单方法是简单地禁用它。
于 2014-04-10T15:12:30.160 回答
6
如果您不禁用交换空间,当在操作系统级别出现内存不足(当地址空间被 cassandra mmap 用完时)问题时,操作系统将尝试占用 JVM 的一部分,而这实际上是在尝试清除默认情况下通过 JNI。现在,由于丢失了一部分堆内存,您的 JVM 速度变慢了。现在 GC 将与具有较少堆内存的 cassandra 写入操作一起发生。这会降低 cassandra 节点的整体性能,并在操作系统级别没有更多内存的时间点逐渐杀死它。
这就是为什么他们建议你做两件事。
- 捆绑 jna.jar。当cassandra的mmap有GC操作时,都是由java代码完成的,而不是cassandra默认自带的JNI部分。因此,它避免了 JNI 在本机操作的情况下尝试存储的一部分地址空间。
- 禁用交换空间。低性能 cassandra 节点将减慢其客户端的所有操作。甚至到该节点的复制也会减慢,因此您的读/写速度会比您想象的要慢。当发生这种内存不足时,节点将死亡并重新启动,而不是占用 JVM 的一部分,从而减慢整个过程。
于 2014-04-11T10:58:35.727 回答