Cassandra 1.2.x-RAM堆和JRE参数-更好理解的问题

Cassandra 1.2.x-RAM堆和JRE参数-更好理解的问题,cassandra,Cassandra,为了更好地了解Cassandra、JRE和RAM配置(请参阅2013年5月的V1.2.5和文档),我想问一些问题: 目前的文档和大量谷歌研究仍然给我留下了一些悬而未决的问题 有兴趣在分布在3个位置的6台机器上使用它作为数百GB数据的简单嵌入式数据存储,这些机器也运行java应用程序 1) 卡桑德拉堆栈大小 bat文件的默认设置为1GB,我认为这是一个bug,LinuxCassandra-env.sh定义了180k。这是一个“只需保留180k,开火,忘记堆栈大小”的事情吗 2) 卡桑德拉的RAM使

为了更好地了解Cassandra、JRE和RAM配置(请参阅2013年5月的V1.2.5和文档),我想问一些问题: 目前的文档和大量谷歌研究仍然给我留下了一些悬而未决的问题

有兴趣在分布在3个位置的6台机器上使用它作为数百GB数据的简单嵌入式数据存储,这些机器也运行java应用程序

1) 卡桑德拉堆栈大小

bat文件的默认设置为1GB,我认为这是一个bug,LinuxCassandra-env.sh定义了180k。这是一个“只需保留180k,开火,忘记堆栈大小”的事情吗

2) 卡桑德拉的RAM使用

使用JNA时,系统RAM基本上分为3个主要区域:

  • Cassandra使用分配的Java堆
  • 卡桑德拉使用JNA获得的exra RAM
  • 操作系统使用剩余的RAM作为磁盘缓存
  • 当前文档基本上只建议:“不要将Java堆大小设置为大于8GB”

    • 这个信息仍然是最新的吗?(这可能是因为该语句来自某个时期,当时Java 1.6中没有包含CMS垃圾收集器)
    • 如何限制JNA堆(是“row\u cache\u size\u in\u mb”参数吗?)
    • 在Cassandra 1.2.x的专用系统上,3个RAM区域(Java堆、JNA额外堆、OS缓存)的良好布局规则是什么?
      • 当有大量RAM(128GB)时
      • 当RAM(4GB)很少时
    (我知道堆大小计算器,这个问题更多是为了理论理解和最新信息)

    3) Java运行时

    为什么建议仍然使用Java1.6而不是Java1.7

    • 这是“成熟度”操作建议吗
    • 是否有近期已知的具体问题
    • 或者只是再等一点,直到更多的人报告1.7的完美操作
    4) 嵌入卡桑德拉

    C*启动脚本中的“-XX:MaxTenuringThreshold=1”是将Cassandra与应用程序代码分开的一个轻微提示,应用程序代码通常使用更高的阈值会更好。另一方面,“1”也可能有点过时- 这个设置还那么重要吗?(从现在开始使用CMS垃圾收集器和JNA-RAM,甚至可能使用Java1.7?

    1)您在看Xmx吗?我在cassandra.bat中根本看不到Xss

    2) 基本正确。Cassandra现在很长一段时间(1.0 IIRC)实际上不需要JNA进行堆外分配

    您不希望堆大于8GB,因为CMS和G1仍然阻塞,最终导致STW暂停。简要说明:碎片化。更长:

    Cassandra为行缓存和存储引擎元数据进行堆外分配。前者易于调整;后者并非如此。基本上,每TB压缩数据需要大约20GB的ram,到此为止。减少内存使用的方法包括禁用压缩、降低bloom过滤器精度和增加索引间隔。在其他条件相同的情况下,所有这些都会降低你的表现

    3) 成熟。我们是后来的采用者;这样我们的问题就少了。Cassandra2.0将需要Java7


    4) 这还没有过时。

    谢谢你,很抱歉我的第一个问题,我真的把Xss和Xmx搞砸了。我真丢脸。你的回答让我做了更多的谷歌搜索,我发现你的演示文稿是关于1.2/2.0的,如果有人在我的stackoverflow问题上绊倒,演示文稿还包含关于内存和V2.0的信息: