0

我有一个 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)
4

1 回答 1

3

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

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

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

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

于 2021-01-15T02:22:49.817 回答