我可以提出一些问题,以便更好地了解Cassandra和JRE以及RAM配置(参考V1.2.5和2013年5月的文档): 目前的文档和大量的谷歌研究仍然给我留下了一些未解决的问题。
有兴趣将它作为简单的嵌入式数据存储区用于分布在3个位置的6台计算机上的几百GB数据,这些计算机也运行java应用程序。
1)Cassandra的筹码大小
Windows .bat文件的默认设置为1GB,我认为这是一个错误,Linux cassandra-env.sh定义为180k。这是一个"只留下180k,火,忘记堆栈大小"事?
2)Cassandra的RAM使用
使用JNA时,系统RAM基本上分为3个主要区域:
目前的文档基本上只建议:"不要将Java堆大小设置为高于8GB"
(我知道堆大小计算器,这个问题更多是理论上的理解和最新信息)
3)Java Runtime
为什么建议仍然使用Java 1.6而不是Java 1.7。
4)嵌入Cassandra
" -XX:MaxTenuringThreshold = 1"在C * start脚本中有一个小小的暗示,将Cassandra与应用程序代码分开,应用程序代码通常在更高的阈值下生活得更好。另一方面," 1"可能也有点过时了 - 这个设置仍然很重要吗? (从现在开始使用CMS垃圾收集器和JNA-RAM,甚至可能使用Java1.7?)
答案 0 :(得分:1)
1)你在看Xmx吗?我在cassandra.bat
中根本没有看到Xss2)大致正确。 Cassandra实际上并不需要JNA进行堆外分配(1.0 IIRC)。
您不希望堆大于8GB,因为CMS和G1仍然会阻塞并最终导致STW暂停。简短说明:碎片化。更长:http://www.scribd.com/doc/37127094/GCTuningPresentationFISL10
Cassandra为行缓存和存储引擎元数据进行堆外分配。前者很容易调整;后者不是。基本上,每TB压缩数据需要大约20GB的ram,故事结束。您可以采取的减少内存使用的方法包括禁用压缩,降低布隆过滤器精度以及增加index_interval。所有这些都会降低你的表现,其他条件相同。
3)成熟度。我们是晚期采用者;我们这样的问题少了。 Cassandra 2.0将需要Java7。
4)这不是过时的。