2013-05-31 33 views
2

我可以問一些問題,以更好地瞭解Cassandra和JRE以及RAM配置(參考V1.2.5和2013年5月的文檔): 目前的文檔和大量的谷歌研究仍然留給我一些開放的問題。Cassandra 1.2.x - RAM堆和JRE參數 - 更好的理解問題

有興趣將它作爲簡單的嵌入式數據存儲,用於分佈在3個位置的6臺機器上的幾百GB數據,該機器還運行Java應用程序。

1)Cassandra的堆棧大小

在Windows .bat文件有一個默認設置爲1GB,我認爲這是一個錯誤,在Linux cassandra-env.sh定義180K。這是一個「只留下180K,火,忘了堆棧大小」的東西?

2)Cassandra的RAM使用

當使用JNA,系統RAM被基本上分成3個主要區域:

  1. 卡桑德拉使用分配的Java堆
  2. 卡桑德拉使用由JNA
  3. 得到關節外RAM
  4. 操作系統使用RAM的剩餘部分作爲磁盤緩存

當前文檔基本上只推薦:「不要設置Java堆大小高於8GB」

  • 這個信息仍然是最新的嗎? (這可能是因爲這種說法是從時間,當沒有包含在Java 1.6的CMS垃圾收集器)
  • 如何限制JNA堆(難道是「row_cache_size_in_mb」參數?)
  • 什麼是在Cassandra 1.2.x專用系統上的3個RAM區域(Java HEAP,JNA extra HEAP,OS CACHE)的良好佈局規則?
    • 有很多RAM(128GB)時?
    • 什麼時候內存很少(4GB)?

(我知道堆大小的計算器,這個問題是更多的理論認識和最新的信息)

3)Java運行時

爲什麼建議還是使用Java 1.6而不是Java 1.7。

  • 這是「成熟」操作建議嗎?
  • 近幾年有沒有具體的問題?
  • 還是等待更多,直到更多人用1.7報告無瑕操作?

4)嵌入卡桑德拉

的「-XX:MaxTenuringThreshold = 1」中的C *啓動腳本是輕微提示從應用程序代碼,這通常生活與較高的閾值更好地分離卡桑德拉。另一方面,「1」也可能有點過時 - 這個設置仍然很重要嗎? (因爲現在使用CMS垃圾收集器和JNA-RAM,甚至可能使用Java1.7?)

回答

1

1)您是否正在查看Xmx?我沒有在cassandra.bat中看到Xss

2)大部分正確。 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)這不是過時的。

+0

謝謝 對不起,我的第一個問題,我真的搞砸了Xss和Xmx。對我感到羞恥。 你的回答讓我做了更多的Google搜索,我發現你的演示文稿約1.2/2.0,以防別人絆倒我的stackoverflow問題,演示文稿還包含有關內存和約V2.0的信息:http://www.slideshare達網絡/ planetcassandra/NYC喬納森-埃利斯-基調-卡桑德拉-12-20 – Alex