簡體   English   中英

一致性為ONE的讀取查詢期間的Cassandra超時

[英]Cassandra timeout during read query at consistency ONE

我對cassandra db有問題,希望有人可以幫助我。 我有一個表“ log”。 在日志表中,我插入了大約10000行。 一切正常。 我可以做一個

select * from

select count(*) from

一旦我用TTL 50插入100000行,就會收到錯誤消息

select count(*) from

版本:cassandra 2.1.8,2個節點

一致性為ONE的讀取查詢期間的Cassandra超時(需要1個響應,但僅響應0個副本)

有人知道我在做什么錯嗎?

CREATE TABLE test.log (
    day text,
    date timestamp,
    ip text,
    iid int,
    request text,
    src text,
    tid int,
    txt text,
    PRIMARY KEY (day, date, ip)
) WITH read_repair_chance = 0.0
   AND dclocal_read_repair_chance = 0.1
   AND gc_grace_seconds = 864000
   AND bloom_filter_fp_chance = 0.01
   AND caching = { 'keys' : 'ALL', 'rows_per_partition' : 'NONE' }
   AND comment = ''
   AND compaction = { 'class' : 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy' }
   AND compression = { 'sstable_compression' : 'org.apache.cassandra.io.compress.LZ4Compressor' }
   AND default_time_to_live = 0
   AND speculative_retry = '99.0PERCENTILE'
   AND min_index_interval = 128
   AND max_index_interval = 2048;

該錯誤消息表明READ操作存在問題。 最有可能是讀取超時。 您可能需要按照此SO回答中所述的更長的讀取超時時間來更新Cassandra.yaml。

200秒的示例:

read_request_timeout_in_ms: 200000

如果無法進行更新,則可能需要調整Cassandra的JVM設置。 有關更多信息,請參見DataStax的“ 調整Java操作 ”。

count()是一個非常昂貴的操作,想象一下Cassandra需要掃描所有節點上的所有行,只是為了給您計數。 如果行較少,但行數較大,則應使用另一種方法來避免超時。

此類查詢之一的示例:

從test.log中選擇日期,日期,ip,iid,請求,src,tid,txt,其中day ='Saturday'和date ='2017-08-12 00:00:00'和ip ='127.0 0.1'

備注:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM