我正在運行一系列與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在寫入時被認爲是有害的?
我的觀點是(我認爲你的回答證實了這一點),你實際上並沒有使用CL.ONE代替CL.ALL提高性能。您的客戶可以更快地暢通無阻,但您的服務器可能必須執行額外的處理,如提示或修理。在這種情況下,我想知道爲什麼有人會使用CL.ONE? – user1202136 2013-03-05 08:01:06
你的觀點是正確的 - 至於爲什麼要使用CL.ONE?這取決於您是否希望Cass更快地響應您的在線查詢。通常,Cass服務器的負載並不是很重,以至於修復的處理時間是一個重要問題(儘管在某些情況下,修復時間可能會很長)。 – Sarge 2013-03-05 17:04:28