【发布时间】:2013-05-27 15:33:13
【问题描述】:
我想问一些问题,以更好地了解 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 个主要区域:
- Cassandra 使用分配的 Java 堆
- Cassandra 使用 JNA 获得的额外 RAM
- 操作系统使用剩余的 RAM 作为磁盘缓存
目前的文档基本上只建议:“不要将Java堆大小设置为高于8GB”
- 此信息是否仍然是最新的? (这可能是因为 CMS 垃圾收集器未包含在 Java 1.6 中)
- 如何限制 JNA 堆(是 'row_cache_size_in_mb' 参数吗?)
- 对于 Cassandra 1.2.x 的专用系统上的 3 个 RAM 区域(Java HEAP、JNA extra HEAP、OS CACHE),有什么好的布局经验法则?
- 当拥有大量 RAM (128GB) 时?
- 当 RAM (4GB) 很少时?
(我知道堆大小计算器,这个问题更多是为了理论理解和最新信息)
3) Java 运行时
为什么仍然建议使用 Java 1.6 而不是 Java 1.7。
- 这是一个“成熟”的运营建议吗?
- 是否存在近期已知的具体问题?
- 或者只是再等一会儿,直到更多人报告 1.7 运行完美?
4) 嵌入 Cassandra
C* 启动脚本中的“-XX:MaxTenuringThreshold=1”是一个将 Cassandra 与应用程序代码分开的小提示,通常使用较高的阈值会更好。另一方面,“1”也可能有点过时了—— 这个设置还有那么重要吗? (从现在开始使用 CMS 垃圾收集器和 JNA-RAM,甚至可能使用 Java1.7?)
【问题讨论】:
标签: cassandra