2013-07-11 41 views
1

我是cassandra的新手,剛剛瞭解它的基礎知識。我在cassandra面臨頻繁的例外。我正在使用節儉API單節點cassandra。主要是我正在寫作,但那些涉及現有的檢查。Cassandra頻繁閱讀超時錯誤

我試着從10s增加read_request_timeout_in_ms到非常大的9480secs。然後我也有超時錯誤。我不知道背後的確切原因。

這裏是堆棧跟蹤:

org.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out  
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:129) 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
    at org.apache.thrift.transport.TFastFramedTransport.readFrame(TFastFramedTransport.java:140) 
    at org.apache.thrift.transport.TFastFramedTransport.read(TFastFramedTransport.java:134) 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
    at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:378) 
    at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) 
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204) 
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) 
    at org.apache.cassandra.thrift.Cassandra$Client.recv_set_keyspace(Cassandra.java:531) 
    at org.apache.cassandra.thrift.Cassandra$Client.set_keyspace(Cassandra.java:518) 
    at at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:619) 
Caused by: java.net.SocketTimeoutException: Read timed out 

    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.read(SocketInputStream.java:129) 
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:127) 
    ... 25 more 
+0

您應該重新格式化您的轉儲。格式良好且可讀性更高時,可能會回答您的問題 – Sprottenwels

+0

@ user2572801頻繁地,您的意思是1/5還是意味着每個請求? –

+0

不是很多請求後,很多插入它開始破壞 – user2572801

回答

4

這是怎麼回事是你告訴卡桑德拉讓你查詢的運行很長時間,但是你還沒有告訴你的儲蓄客戶等待這麼長的時間來自Cassandra的回覆。

但是真的,10s是充足的時間。不要改變這一點。相反,找出爲什麼您的查詢花費更長的跟蹤時間:http://www.datastax.com/dev/blog/tracing-in-cassandra-1-2

此外,您應該查看這裏的數據建模資源:https://wiki.apache.org/cassandra/DataModel。存在檢查之前寫是一種設計氣味。

+0

是的,我需要嘗試一些監測工具..會給一個嘗試..因爲我是新手一個愚蠢的問題:我有一個表rel,存儲3列有3個ID ... .. rel表(rowkey,startId,relId,endId)..所有三個索引作爲查找可以通過其中任何一個..現在rowkey是UUID ...所以現有的檢查我必須做任何insert..can我通過設計rowkey作爲這3個ID的散列來避免這種情況,這樣我就不必做現有的檢查......這是正確的設計... – user2572801

+0

您能否詳細說明Existing-check-before-write是設計氣味還是鏈接一些與此相關的資源? – pinkpanther