2013-03-06 114 views
11

我有我的戒指5個節點與SimpleTopologyStrategyreplication_factor=3。我使用壓力工具插入了1M行。當我嘗試使用RPC超時 - 卡桑德拉

SELECT count(*) FROM Keyspace1.Standard1 limit 1000000; 

讀取行數在cqlsh它失敗,錯誤:

Request did not complete within rpc_timeout.

它獲取了極限100000失敗甚至500000
我所有的節點都在運行。我需要增加rpc_timeout嗎?

請幫忙。

+0

因爲有些人我是誰,因爲他們想要做了轉發這個帖子給我的工作,我覺得有必要一提的是**增加查詢超時在生產集羣中是一個可怕的,可怕的想法。** – Aaron 2018-02-14 14:01:15

回答

6

需要很長時間來讀取1M​​行,這可能是爲什麼它超時。您不應該使用這樣的計數,因爲它必須讀取所有數據,所以它非常昂貴。如果您需要計算大量物品,請使用卡桑德拉計數器。

您也應該檢查你的卡珊德拉日誌,以確認沒有任何其他問題 - 有時在卡桑德拉的異常導致客戶端超時。

11

您收到此錯誤是因爲服務器端的請求超時。人們應該知道,在Cassandra這是一個非常昂貴的操作,正如其他人指出的那樣。

但是,如果您確實想要這樣做,則應更新/etc/cassandra/cassandra.yaml文件並更改range_request_timeout_in_ms參數。這對你所有的距離查詢都是有效的。

示例設置40秒的超時:

range_request_timeout_in_ms: 40000 

你可能就需要在客戶端調整爲好。當使用cqlsh作爲客戶端,這是通過創建/ ~/.cassandra/cqlshrc下更新爲cqlsh您的配置文件和client_timeout參數添加到connection部分完成。

示例設置40秒的超時:

[connection] 
client_timeout=40