gpt4 book ai didi

cassandra - 我的大量表 (2k+) 是否会导致我的写入超时异常?

转载 作者:行者123 更新时间:2023-12-04 15:05:14 26 4
gpt4 key购买 nike

我正在运行带有 Datastax Java 驱动程序 3.8.0 的 OS Cassandra 3.11.9。我有一个 Cassandra 键空间,它有多个表用作查找表/搜索索引。每当我收到对端点的新 POST 请求时,我都会解析该对象并将其插入相应的 Cassandra 表中。我还向每个相应的查找表插入了内容。 (每个对象 10-20 个)

当向系统中摄取大量数据时,我一直在驱动程序中遇到 WriteTimeoutExceptions。

我试图通过引入 Apache Camel 并将所有语句放入 session 可以处理的队列中,将插入请求序列化到查找表中,但这没有帮助。对于 Camel,由于异常现在发生在 Camel 线程中,测试会继续运行,而不是在第一个异常时失败。最终,测试似乎让 Cassandra 崩溃了。 (尽管 Cassandra 日志中没有任何内容)

我还尝试关闭我的查找表,而是将每个对象插入到主表中 15x(以模拟类似数量的写入,就好像我打开了查找表一样)。这次测试无一异常(exception)地通过了,这让我觉得表的数量太多是问题所在。

大量(2k+)Cassandra 表是否有代码味道?我们应该重新架构还是投入更多资源?日志中没有显示任何指示性信息,主要是关于表数量等的一些状态 - 无一异常(exception))

Datastax Java Driver 可以像这样多线程使用吗?它说它是线程安全的。

最佳答案

大量表对性能有直接影响 - 请参阅 doc (whole series 是很好的信息来源),以及 this blog post更多细节。基本上,使用约 1000 个表,性能会下降约 20-25%。

这可能是一个原因,不完全直接,但相关。对于每个表,Cassandra 需要分配内存,在 memtable 中为它分配一部分,保留有关它的信息等。这个特定问题可能来自阻塞的 memtable 刷新,或类似的东西。检查nodetool tpstatsnodetool tablestats用于阻塞或挂起的内存表刷新。最好设置一些连续监控解决方案,例如 metrics collector for Apache Cassandra , 并且在一段时间内观看 important metrics也包括该信息。

关于cassandra - 我的大量表 (2k+) 是否会导致我的写入超时异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66282119/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com