高并发查询taosadapter内存占用飙升,导致服务器内存耗尽

【TDengine 使用环境】
测试

【TDengine 版本】
3.3.6.13
【操作系统以及版本】
Linux taos1 6.1.0-22-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-06-21) x86_64 GNU/Linux
【部署方式】容器/非容器部署
非容器部署
【集群节点数】
3
【集群副本数】
3
【描述业务影响】
业务场景:
目前项目需要查询58925个时间段的数据(时间段不连续)。循环查询不现实,故使用分批查询,每批查询500个时间段(每个时间段使用union all连接组成一个sql)。在此基础上总共需要查询118次,单线程循环查效率不理想,现提升至8个线程并发查询118批数据。在此过程中数据库
taosadapter内存占用飙升,导致服务器内存耗尽,报:memory exceeds threshold
【问题复现路径/shan】
组装500个sql使用union all拼接后,多线程循环查询数据库
【遇到的问题:问题现象及影响】
数据库内存飙升,查询服务报错:memory exceeds threshold。导致服务不可用
【资源配置】

【报错完整截图】


@Jade

先降低循环频率,看看内存能否释放出来。

我降低频率以后(数据量减少到7000个时间段,并发数降低到5个),发现这个查完一次,内存并不会缩减,下次再查(同样的数据条件),内存会继续累加


查完以后为什么不会释放内存?如果说是有缓存存在的话,我下次查为什么还会增加内存?

可以继续降低频率,只观察内存是否有释放。


一个小时了,内存并未释放,期间没有任何查询


继续降低频率(数据量在7000个时间段,取消并发使用单线程查询)。结果一致,内存并不会主动释放

好的,需要远程排查一下,您加微信a15652223354,我们具体看一下问题吧。

可能是oom

线下处理中。

下个版本月底发布 ,可以到时候再做验证

可以更新到 3.3.7.0

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。