一样的insert语句执行时间会缓慢变慢

【TDengine 使用环境】
测试

【TDengine 版本】

3.3.7

【操作系统以及版本】

统信OS

【部署方式】容器

【集群节点数】1

【集群副本数】1

【描述业务影响】

【问题复现路径/shan】数据库运行缓慢,cpu持续占用高,之后重启,资源恢复后测试

【遇到的问题:问题现象及影响】一样的运行逻辑,在压力测试前一段时间入库速度比较高,但跑着跑着就变慢

【资源配置】32G 8核

【报错完整截图】

压测期间资源消耗图

不知道怎么排查这个问题

– 一天一个数据块 数据存一年 总共4个分片 每个分片一个vnode 每个vnode有128m写缓存 32m读缓存 缓存子表最近写入数据 合并子表落盘(因为我们系统表比较多)以子表名结尾4个字符分片
CREATE DATABASE xxxxxxx VGROUPS 4 PRECISION ‘ms’ KEEP 366d DURATION 1 BUFFER 128 CACHESIZE 32 CACHEMODEL ‘both’ STT_TRIGGER 8 STT_TRIGGER 4; 建库是这样的。今天早点的时候,我压测也发现运行时间久,入库会变慢的情况,当时没加监控日志,只是从图上看变慢时间点前后,内存占用会大幅减少。原本我以为是系统落盘清理内存时会导致insert变慢,但晚上加了监控重新测,发现有异常时,内存占用没有下来

不知道我有没有说清楚。我让ai给我整理了一下:TDengine 问题详细说明

一、环境信息

  1. TDengine 版本:3.3.7

  2. 操作系统:统信 OS

  3. 部署方式:容器部署

  4. 集群配置:单节点集群(节点数 1)、副本数 1

  5. 资源配置:宿主机 / 容器资源为 32G 内存 + 8 核 CPU

二、数据库配置(建库语句)

sql

CREATE DATABASE xxxxxxx 
  VGROUPS 4  -- 4个分片(每个分片对应1个vnode)
  PRECISION 'ms' 
  KEEP 366d  -- 数据保留1年
  DURATION 1  -- 数据块时长1天
  BUFFER 128  -- 每个vnode写缓存128MB
  CACHESIZE 32  -- 每个vnode读缓存32MB
  CACHEMODEL 'both'  -- 缓存最近写入的子表数据
  STT_TRIGGER 8  -- 子表合并落盘触发条件(此处配置重复,实际以最后一个STT_TRIGGER 4为准)
  STT_TRIGGER 4;

三、问题现象

  1. 压测初期表现

    • 入库速度正常:persistMessage接口调用次数 1000 次 / 周期,平均耗时稳定在 45~55ms;

    • 资源占用稳定:CPU 占用处于合理区间,内存占用逐步上升后保持高位。

  2. 压测后期异常

    • 入库速度骤降persistMessage接口平均耗时从~50ms 飙升至 150ms 以上,最高达 342ms;

    • CPU 持续高占用:容器 CPU 使用率长期维持在 300%~400%(监控图中 “执行了 sql 后 cpu 一直高” 阶段);

    • 内存无预期下降:异常出现时,内存未因数据落盘而降低,仍保持高位(与 “落盘清理内存导致变慢” 的初始猜测不符)。

  3. 重启后的表现

    • 重启服务后,CPU、内存占用恢复正常,压测可重新启动并恢复初期的正常入库速度;

    • 重复压测后,上述 “初期正常→后期变慢 + CPU 高占” 的问题会再次复现。

四、影响范围

  • 业务侧:数据入库延迟增加,可能导致数据堆积或业务流程阻塞;

  • 资源侧:CPU 长期高负载运行,容器资源利用率异常,存在服务稳定性风险。

您好,目前来看线索不是很多。您可以在写入阻塞时,top -H 看下什么线程占比比较高。

感谢回答,我复现问题后再把信息贴上来。除了这个外还需要什么信息?需要运行日志吗

如果日志中有 ERROR 就一起贴出来。