2013-12-10 11 views
1

我注意到隨着時間的推移連續寫入Cassandra寫入性能嚴重下降。Cassandra中的嚴重降級隨着時間的推移寫入連續流數據的性能

我將時間序列數據與時間戳(T)作爲列名插入到單列中存儲24小時數據的寬列中。 流數據是從數據生成器寫入的(4個實例,每個實例有256個線程)並行插入數據到多個行。 此外,還將數據插入到具有DateType和UUIDType索引的列族中。

CF1:

 Col1 | Col2 | Col3(DateType) | Col(UUIDType4) | 

RowKey1

RowKey2

CF2(寬列族):

RowKey1 (T1,V1)(T2,V3)(T4,V4)......

RowKey2(T1,V1)(T3,V3).....

The no。插入的數據點數/秒會隨着時間的推移而降低,直到不再有插入數據爲止。約6-8小時的初始性能約爲60000 ops/sec,然後逐漸降至0 ops/sec。在所有節點上重新啓動DataStax_Cassandra_Community_Server有助於恢復原始吞吐量,但幾小時後會再次觀察行爲。

操作系統:Windows Server 2008 節數節點:5 卡桑德拉版本:DataStax社區1.2.3 內存:8GB HEAPSIZE:3GB 垃圾收集器:默認設置[ParNewGC]

我還注意到一個沒有。顯着增加。當性能開始下降時,OpsCenter報告的等待寫入請求(大約200,000)。

我不明白是什麼阻止寫操作完成,爲什麼他們隨着時間堆積?我沒有看到Cassandra日誌中的任何可疑內容。

操作系統設置是否與此有關? 有任何建議可以進一步探究此問題嗎?

+1

我會升級到最新的1.2。 X release,1.2.12,然後再次嘗試你的測試。自1.2.3 – Zanson

回答

2

與新的默認使您的寫入超時在行2.0(2秒而不是10秒的)將與您寫積壓有助於使減載更快踢:https://issues.apache.org/jira/browse/CASSANDRA-6059

+0

我會嘗試一下,讓你知道結果 –

+0

隨着上述變化,我沒有看到一個驚人的增加。的等待寫入。性能下降,但不像以前那樣逐漸降低到0插入/秒。我在集羣的每個節點上將RAM從8GB增加到了16GB。我打算做一些實驗,將HeapSize從3G增加到4-6GB。 –

+0

我不建議在沒有特定原因的情況下猜測默認堆大小。 – jbellis

3

您是否看到待處理壓縮(nodetool compactionstats)的增加?或者你看到封鎖的沖洗作家(nodetool tpstats)?我猜你正在向卡桑德拉寫數據的速度比它可以消耗的快。

Cassandra不會阻塞寫入,但這並不意味着您將不會看到使用的堆量增加。掛起的寫入有開銷,被阻塞的memtables也一樣。另外,每個SSTable都有一些內存開銷。如果壓實落後,這將被放大。在某些情況下,您可能沒有足夠的空間來分配單個寫入所需的對象,並且最終花費所有時間等待GC無法提供的分配。

隨着總容量的增加或消耗數據的計算機上的IO數量的增加,您將能夠維持此寫入速率,但一切都表明您沒有足夠的容量來維持該負載。

+0

以來,出現了很多錯誤修復。感謝您的回覆。有待處理的壓實任務平均在30左右,但我在80-100個任務中觀察到峯值。等待的沖洗看起來正常高峯在4至6點左右.CMS和ParNewGC收集時間有時增加,但我沒有看到任何異常。此外,我有3GB的堆空間承諾,我相信是DataStax文檔中推薦的。 8GB的內存肯定在低端,試圖升級!然而,整體解決方案通過添加機器來擴展規模,但是這是困擾性能的縮減。 –

+0

在高負載下性能的逐漸降低是Cassandra容量不足的標誌。你需要更多的IO來處理你推動的負載。如果您有適當的容量,性能將保持不變,直到您需要增加更多容量。 – bcoverston

+0

我相信存儲DataStax OpsCenter數據會增加性能問題。我的下一步行動是將內存升級到16GB,然後將堆空間增加到4-6GB。令我吃驚的是,待處理寫入請求(超過200,000)的驚人增長,相對於文檔中已接受的限制爲100! –

相關問題