Cassandra壓縮任務堆積如何處理?

2021-09-28 15:52:31 字數 972 閱讀 7910

當短時間內寫入的資料太多,或者連續擴容多個節點,都有可能導致壓縮任務堆積,壓縮任務堆積會導致sstable太多,讓該節點查詢變慢,時延變大,一直累積下去,集群會變的很不穩定。解決方法如下:

預設壓縮閾值是16mb/s,偏小,可以更改的大一點,這個引數是可以通過nodetool setcompactionthroughput xx進行修改,配置檔案cassandra.yaml裡的預設值(配置項是compaction_throughput_mb_per_sec),也建議修改到乙個合適的值,否則某一天重啟節點,又恢復到了預設值。

修改配置檔案cassandra.yaml裡的配置項concurrent_compactors,這個不能動態調整,需要重啟生效,預設是2-8之間的乙個值,取自資料盤和cpu個數的最小值,這個值一般不需要動,除非你是ssd的盤,可以適當的增加。

如果只是其中乙個節點壓縮堆積,負載特別高,可以考慮先臨時關閉這個節點的gossip,使用nodetool disablegossip命令。這樣這個節點對於客戶端而言就是down的狀態,客戶端就不會發請求到該節點,但是集群內部之間通訊正常,不會丟失資料。只要你不使用all一致性,是不會影響業務正常請求的。然後你可以把節點的壓縮速度閾值調為0,也就是不限制速度,讓它早點壓縮完畢恢復正常。最後記得用enablegossip恢復。

這個方法不在cassandra的官方文件裡,也沒有出現在官方的changelist裡。因為這是乙個很危險的操作,墓碑不及時清除,會帶來讀操作效能問題。如果你確認短時間內不清除墓碑不會對你的業務場景產生影響,你可以嘗試臨時使用該方式,在壓縮完成後恢復,不能長期使用。

cassandra在壓縮的時候為了安全清除墓碑,會查詢多個sstable檔案,當壓縮堆積,sstable很多的時候,壓縮會變的相當緩慢。所以官方增加了這麼乙個彩蛋形式的配置項。這個配置項是乙個環境變數,在啟動的時候指定

./cassandra -dcassandra.never_purge_tombstones=true

注意這個配置項在2.1.15版本以後才有。

資料壓縮 任務一

任務 總結計算機程式設計中的各種資料型別,其表示形式和計算方法。重點關注型別轉換,數值溢位和移位等操作。整型 浮點型 字元型由高到低排序 long double double float unsigned long long int long long int unsigned long int l...

資料壓縮任務三

作業3 讀入乙個24bitrgb檔案 以down.rgb為例,其解析度為256 256 輸出該資料檔案中r g b三個分量 各8bit表示 的概率分布示意圖 類似下圖 和熵。include include const int n 65536 using namespace std pragma wa...

grunt壓縮js多個任務的樣板

module.exports function grunt 新增文字到壓縮後的檔案尾部 footer 這是壓縮檔案尾部 美化 beautify build minjs uglify 新增文字到壓縮後的檔案尾部 footer 這是壓縮檔案尾部 美化 beautify build files backe...