【发布时间】:2020-01-26 04:21:55
【问题描述】:
我有一个专注于 Casandra 数据检索的 C# 应用程序(Datastax 驱动程序)。这样做的主要问题之一是随着容量的增加,异步读取需要超过 60 秒的时间来响应,这会导致应用程序超时。由于这是一个数据检索请求,所以我必须等待异步执行调用完成。这有时会导致应用程序中的 TCP 套接字连接丢失。非常感谢任何解决此问题的建议。
【问题讨论】:
-
您提供的调试信息非常少。您是否尝试过在 cqlsh 中跟踪查询?该表的 nodetool tablestats 和 tablehistograms 的输出是什么?什么是数据模型?对工作量的简要描述也会有所帮助。现代硬件上设计良好的架构应该具有个位数毫秒的响应时间。
-
代码示例也会有所帮助
-
如果您的查询需要 60 秒才能响应,则说明某处存在严重问题。考虑到 5 或 10 秒内的读取超时,我什至不确定这会如何发生(除非您的节点完全不堪重负,甚至无法响应 Cassandra 超时)。
-
很可能是您没有使用按分区键读取,而是使用
select * from table,或select ... from table where ... ALLOW FILTERING... -
@AlexOtt 是的,我对所有查询都使用了 ALLOW FILTERING。为什么你认为它会成为瓶颈?