0

我在 centos 上使用 Cassandra 1.2 和新的 MurMur3Partitioner。

在一个 2 节点集群上都设置了num_tokens=256

在使用 CQL3 插入几百万行后,我看到一个节点使用的内存比另一个节点多得多。

当我运行free命令时,它在第二个节点上显示 6GB 使用量,在种子节点上显示 1GB。

但是,运行时

ps -e -o pid,vsz,comm= | sort -n -k 2

它显示了在每个节点上使用大约 6.8GB 的​​ java 进程。

请注意,我有 MAX_HEAP_SIZE="4GB" HEAP_NEWSIZE="400M"

cassandra-env.sh每个节点上设置。

谁能提供一些见解?

4

1 回答 1

1

这很可能与在 Linux 中报告准确内存利用率的一般困难有关,尤其是与 Java 进程有关时。由于 Java 进程会自动保留和分配内存,因此操作系统看到的内容可能会产生误导。了解 Java 进程在做什么的最好方法是使用 JMX 来监控堆利用率。VisualVM 和 jconsole 等工具可以很好地解决这个问题。

于 2013-01-29T14:34:40.973 回答