2016-06-23 33 views
0

我們使用的是Apache Cassandra 3.0.7版本,關閉後,我們發現幾乎所有節點都佔用了90%的內存,即使磁盤很少被使用。我們有5個節點的集羣,每個節點有15 GB內存,4個內核,200 GB SSD。Cassandra爲正在寫入的數據佔用太多內存

我們通過YAML以及表級別屬性嘗試了所有類型的配置,但似乎沒有任何幫助。內存使用量不斷增加,幾乎與數據成正比。考慮到我們的應用程序是一個寫入密集型應用程序的事實,我們可以減少讀取性能,但希望儘可能少地使用內存。要做到這一點,我們的想法是禁用所有可能的緩存或避免在內存中保留任何不必要的內容。但目前爲止似乎沒有任何幫助。

這裏是我們的YAML:http://pastebin.com/yeRGcHRt

,這裏是我們的表配置:

CREATE KEYSPACE如果不存在test_ks使用複製= { '類': 'SimpleStrategy', 'replication_factor':' 1' }; CREATE TABLE如果不存在 test_ks.test_cf(ID BIGINT PRIMARY KEY,key_str的文本,VALUE1 INT,值2 INT,update_ts BIGINT)WITH bloom_filter_fp_chance = 1 AND 評論= '' 和壓實= { '類': 「組織。 apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold':'32','min_threshold':'4'} AND compression = {'chunk_length_in_kb':'64','class': 'org.apache .cassandra.io.compress.LZ4Compressor'} AND crc_check_chance = 1.0和dclocal_read_repair_chance = 0.1,default_time_to_live = 0 AND gc_grace_seconds = 864000 AND max_index_interval = 10240, memtable_flush_period_in_ms = 3600000 AND min_index_interval = 10240 AND read_repair_chance = 0.0和窺鏡tive_retry ='99PERCENTILE' AND caching = {'keys':'NONE','rows_per_partition':'NONE'};

我們已經看到,大部分消費的是離堆,堆內存在4.5 G.加蓋所以出總共14個G的節點上,僅4.5G由堆消耗。

有沒有人試過這樣的配置?請讓我們知道,如果禁用緩存將幫助我們在這種情況下。如果是,我們如何才能完全禁用緩存。期待您的幫助。

回答

0

爲了減少使用的內存嘗試在cassandra-env.sh MAX_HEAP_SIZE, HEAP_NEWSIZE 接着設置參數值,你想

+0

謝謝Sabik公司的評論。我錯過了在我的問題中添加的一個觀察結果,堆不是問題,我們看到它大部分都是由堆外消耗的。爲了給您一個想法,我們的14G內存,我們的堆用量限制在4.5G,剩下的都是堆外的。 – Mani

0

我們遇到了類似的問題。從Cassandra 2.x升級到3.11.0後,Cassandra在堆上使用了< 2GB,堆外的數據量大於10GB,這是一個以前沒有任何問題的用例。這導致(Windows)計算機持續保持99.5%的內存使用率。堆內存的容量同樣限制在2GB。

大多數高速緩存值都保留爲默認值;特別是行緩存被禁用。

編輯:我有一個更好的答案。它看起來(仍在測試)我們的情況的緩慢是因爲Windows的頁面文件沒有被禁用。 Cassandra recommends disabling the swap file on Linuxpage file on Windows。如果檢測到交換或頁面文件,它也是outputs a warning on startup

Cassandra的離堆內存,至少在Windows上,主要是由於文件的內存映射IO,這顯然是(從閱讀卡桑德拉問題跟蹤)顯著更快。但是,如果啓用了交換/頁文件,事情都是由mmapped文件逼出來的物理內存和經歷巨大的增長放緩交換到磁盤。在我們的測試中禁用Windows上的頁面文件似乎可以顯着減輕這一點。 Cassandra是仍然使用大量的內存mmapped文件,但因爲沒有內存被交換到磁盤,卡珊德拉的某種組合和OS正確釋放的mmapped文件,以便其他進程可以流暢運行。我使用this tool來確認Windows上存在mmapped文件。