be规格:
be 8u64g的机器,正常运行的时候cpu使用率只有20%左右。目前写入的数据比较少,查询的duplicate表table一天的数据量也就80g。
问题现象:
当使用比较多的连接聚合查询时,cpu使用率增加十分明显,三台机器高达95% cpu使用率,查询页面特别卡。但是导入数据是正常的。
使用sql语句每2-3分钟查询最近10分钟的数据,操作费时的主要是join聚合查询,大约有100个(可能都不到)。就是说配置超过一定数量的查询后,doris的cpu突然升高接近100%,查询基本无法使用。
把监控查询关闭后,doris恢复正常了。数据量和查询感觉并不是很大,为何发生这种情况?
看了下查询语句,是有走索引的,在cpu使用比较低的时候,执行sql响应挺快的。
打算把doris的基于普罗的监控配置下,Workload和sql查询限制隔离这些也配置上。
社区有没遇到这种类似情况的,怎么处理和优化,感谢!
sql基本这种:
select t1.time,
ifnull(t2.success, 0) / t1.total as "successRate" from
(select UNIX_TIMESTAMP(`@timestamp`) DIV 180 * 180 AS "time",
count(*) as "total"
FROM `table`
WHERE `env` = 'xxx'
and `@timestamp` BETWEEN FROM_UNIXTIME(1735615188) AND FROM_UNIXTIME(1735615428)
and `uri` = '/rest/xxx'
GROUP BY 1
ORDER BY 1) as t1
left join
(select UNIX_TIMESTAMP(`@timestamp`) DIV 180 * 180 AS "time",
count(*) as "success"
FROM `table`
WHERE `env` = 'xxx'
and `status` < 400
and `@timestamp` BETWEEN FROM_UNIXTIME(1735615188) AND FROM_UNIXTIME(1735615428)
and `uri` = '/rest/xxx'
GROUP BY 1
ORDER BY 1) as t2
on t1.time = t2.time
order by 1