2014-02-16 60 views
2

我有一個2.0.5版本的三節點Cassandra集羣。 RF = 3並且所有數據同步到所有三個節點。 我使用Consistency = ONE從cqlsh中讀取數據。 當我關閉兩個節點時,我的讀取速度比擁有整個羣集時快兩倍。 從cqlsh進行跟蹤顯示,當請求被轉發到其他節點時,會發生整個羣集讀取的速度減慢。 所有節點都位於同一個數據中心本地,系統上沒有其他活動。 那麼,爲什麼請求有時被轉發到其他節點? 即使對於完全相同的密鑰,如果我多次重複相同的查詢,我會發現有時查詢會在本地節點上執行,有時它會被轉發,然後變得非常緩慢。Cassandra讀取緩慢,多個節點

回答

1

這是由於閱讀修理。 默認情況下,讀取修復適用於所有具有一致性級別仲裁的讀取,或者有10%的機會降低一致性級別,這就是爲什麼對於一致性級別,有時您會看到更多的活動和更少的活動。

+0

我使用read_repair_chance = 0。所以我不認爲這是由於閱讀修理。即使是這種情況,我發現這些重定向的次數比我查詢中的10%要多得多。 – user3025533

+0

當讀取或寫入在節點上啓動時,該節點充當協調器,並將根據複製因子將請求轉發到適當數量的節點。它會根據節點的性能歷史選擇轉發讀取請求的節點。所以在請求被轉發的情況下,協調者可能認爲另一個節點具有更好的性能,並且應該將該請求轉發給該節點。 – Navid

+0

有沒有辦法轉發這些請求並使它們始終在本地處理? – user3025533