2012-07-31 57 views
3

我在Cassandra上收到以下警告 - 这是什么意思?这是一个问题吗? 我该如何解决这个问题?这些Cassandra警告意味着什么:无法锁定JVM内存和未初始化的MemoryMeter

警告15:32:06,772无法锁定JVM内存(ENOMEM)。这可能会导致部分JVM被换出,尤其是在启用了mmapped I/O的情况下。增加RLIMIT_MEMLOCK或以root身份运行Cassandra。

警告15:33:20,860未初始化MemoryMeter(jamm未指定为java代理程序);假设10.0的liveRatio。通常这意味着cassandra-env.sh禁用了jamm,因为您正在使用一辆越野车JRE;升级到Sun JRE而不是

我正在使用Cassandra 1.1.2。

回答

4

ENOMEM是Out Of Memory的Linux错误代码。 Cassandra已经使用了它的所有虚拟内存,所以JVM不能从虚拟内存中锁定额外的内存资源。

Jamm(Java代理内存管理)提供了MemoryMeter。我看到的是,您没有安装和设置MemoryMeter作为代理,所以Cassandra禁用了MemoryMeter。此外,MemoryMeter可能只适用于 Sun Oracle JRE,如果您希望MemoryMeter成功运行,则Cassandra更喜欢它。


要添加Jamm到Java代理,添加以下参数的java程序(示例):

-javaagent:bin/../lib/jamm-0.2.5.jar 

(其中路径是罐子驻留的路径)。

+0

如何检查Jamm的安装?我看到cassandra带有jamm-0.2.5.jar在它的lib文件夹中。我检查了jdk版本,它是Java(TM)SE运行时环境(build 1.6.0_24-b07) – Julias 2012-08-02 14:02:07

+0

请参阅我编辑的帖子。 – 2012-08-02 15:10:54

+0

'export JAVA_OPTIONS = -javaagent:$ TITAN_HOME/lib/jamm-0.2.5.jar' – Kuzeko 2017-01-11 20:51:59