2012-01-20 30 views
1

頻繁的Compaction和Memtable Flushing是否會影響集羣的寫入延遲?壓縮和刷新對Cassandra的寫入延遲的影響

在我們的實現中,我們有一堆Counter Column Families [約30],它被非常積極地更新。對我們系統的每個請求都會進行大約15-20次更新[所有差異CFs]。

我們能夠注意到壓縮和沖刷在我們的系統日誌中發生的cassandra在交通繁忙時發生。並且當我們在負責密鑰的節點(日時間戳,分鐘時間戳,小時間戳)以及簇的寫入延遲時間上經歷高負荷時比平常增加[0.6ms至26ms]

我們還沒有觸及任何cassandra和我們運行cassandra的機器的默認設置都有相當不錯的配置[32G RAM和16核心] 4G to cassandra

我們嘗試禁用durable_writes以瞭解它是否有幫助,但它沒有那麼好,預計

回答

5

簡版:如果將Cassandra配置爲建議在與數據目錄不同的磁盤上使用commitlog,則flush和compaction應該具有negligibl影響。

注意事項:

更新主要是CPU綁定,和壓實需要大量的CPU。如果您正在運行少於4個內核的機器或虛擬機[不是您的情況,但爲了完整性],您可能需要減少compaction_throughput_mb_per_sec以將其調低。

如果你有足夠的CFs在同一時間刷新(聽起來可能是用每個請求更新CF的2/3的情況),那麼Cassandra可能會暫時阻止寫入操作,以確保它不接受寫入比刷新它們更快(否則最終會導致內存不足和死亡)。 4 GB對於許多CF中的大容量插入來說是相對較小的堆;我建議將其增加到8.還有一點值得啓用JVM GC日誌記錄來查看JVM需要工作的難度 - 示例設置位於cassandra-env.sh中。

最後,你沒有提到你正在使用的Cassandra版本,但是隨着每個主要版本的發佈,性能已經可靠地提高了。特別是如果你使用的東西超過0.8,我會建議升級。

+0

對不起沒有提及cassandra版本,我們使用datastax構建的1.0.5 rpm版本。感謝您澄清事情。 – Tamil