2013-03-04 38 views
0

我正在運行一系列與Cassandra的基準測試。其中,我嘗試了以下配置:1個客戶端節點,3個服務器節點(相同的環)。Cassandra:CL!= ALL寫入時會使集羣過載

​​

然後我從客戶端節點(3副本,一致性任何/所有)運行cassandra-stress

[stop/clean/start servers] 
./tools/bin/cassandra-stress -o INSERT -d server1,server2,server3 -l 3 -e ANY 
[224 seconds] 
[stop/clean/start servers] 
./tools/bin/cassandra-stress -o INSERT -d server1,server2,server3 -l 3 -e ALL 
[368 seconds] 

人們可能會推斷降低所有實驗都清理服務器後運行一致性級別會提高性能但是,沒有理由爲什麼會發生這種情況。瓶頸是服務器上的CPU和他們都必須最終本地寫。事實上,仔細閱讀服務器日誌,發現已經發生了暗示的切換。重複實驗,我有時會在客戶端上獲取UnavailableException,並在服務器上收到「MUTATION messages dropped」消息。

此問題是否記錄在案?如果CL!= ALL在寫入時被認爲是有害的?

回答

0

我不太清楚你的觀點是什麼。事情似乎按照設計工作。

是的,如果你在寫CL.ONE將完成寫入速度更快,在CL.ALL - 因爲它只有從一個節點獲得一個ACK - 不是所有的人。

但是,你沒有測量將要採取修復數據的時間。您將花費時間排隊並處理提示的切換 - 但是,節點只能維持一小時。

最終,你必須運行nodetool repair改正的一致性,並刪除了墓碑。

+0

我的觀點是(我認爲你的回答證實了這一點),你實際上並沒有使用CL.ONE代替CL.ALL提高性能。您的客戶可以更快地暢通無阻,但您的服務器可能必須執行額外的處理,如提示或修理。在這種情況下,我想知道爲什麼有人會使用CL.ONE? – user1202136 2013-03-05 08:01:06

+0

你的觀點是正確的 - 至於爲什麼要使用CL.ONE?這取決於您是否希望Cass更快地響應您的在線查詢。通常,Cass服務器的負載並不是很重,以至於修復的處理時間是一個重要問題(儘管在某些情況下,修復時間可能會很長)。 – Sarge 2013-03-05 17:04:28