【问题标题】:Cassandra debug log analysisCassandra 调试日志分析
【发布时间】:2021-04-19 12:30:03
【问题描述】:

我有一个 cassandra debug.log。它有很多未被任何应用程序触发的 SELECT * 查询。应用程序在 SELECT 查询中请求特定字段,而且这些查询似乎有一个 LIMIT 5000 子句,我很确定它在任何应用程序中都不存在。这些查询是由 cassandra 在内部触发的吗?调试日志充满了这样的查询。该应用程序使用 gocql 驱动程序连接到 cassandra。

<SELECT * FROM table_name WHERE id = 0 LIMIT 5000>, was slow 45 times: avg/min/max 4969/4925/4996 msec - slow timeout 500 msec/cross-node
DEBUG [ScheduledTasks:1] 2021-01-14 18:02:33,271 MonitoringTask.java:152 - 160 operations timed out in the last 5004 msecs:
<SELECT * FROM table_name WHERE id = abcd LIMIT 5000>, total time 7038 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = efgh LIMIT 5000>, total time 5793 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = hijk LIMIT 5000>, total time 5289 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = lmnop LIMIT 5000>, total time 5826 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = qrst LIMIT 5000>, total time 6006 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = uvwx LIMIT 5000>, total time 5905 msec, timeout 5000 msec/cross-node
<SELECT * FROM table_name WHERE id = yzabc LIMIT 5000>, total time 5217 msec, timeout 5000 msec/cross-node 
.
..
....
.....
... (110 were dropped)

【问题讨论】:

    标签: cassandra gocql


    【解决方案1】:

    所有这些查询都来自您的应用程序。它们不是 Cassandra 完成的。

    来自MonitoringTask 的这些消息由 Cassandra 3.10+ 中的一项称为慢查询日志记录 (CASSANDRA-12403) 的功能进行记录。我之前已经在这篇文章中解释过——https://community.datastax.com/questions/7835/

    慢查询日志将耗时超过slow_query_log_timeout_in_ms(默认为 500 毫秒)的查询聚合成 5 秒“窗口”组。作为聚合的一部分,列不会在日志记录中枚举,而是用星号 (*) 替换,因此可以轻松分组。

    此外,驱动程序已启用分页。当您的应用程序未设置页面大小时,驱动程序默认为页面大小 5000 (LIMIT 5000)。这是您发布的慢查询消息中记录的限制。干杯!

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 2018-09-27
      • 2015-06-22
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 2015-06-03
      相关资源
      最近更新 更多