流计算导致td崩溃,重启无效

【TDengine 使用环境】
测试环境

【TDengine 版本】3.3.8.8 oss

【操作系统以及版本】linux

【部署方式】容器部署

【集群节点数】1

【集群副本数】1

【描述业务影响】采用流计算对指定子表进行统计计算,正常一段时间后,添加包含union all的流计算,td服务持续异常,重启后删除union流又挂掉,再次重启再次挂掉

【资源配置】16G 32C

【报错完整截图】

建流语句:
CREATE STREAM stream_probe.s_union_ck_test
PERIOD(10s)
FROM stream_probe.src_test
PARTITION BY tbname, did
INTO stream_probe.out_union_ck
OUTPUT_SUBTABLE(CONCAT(‘out_union_ck_’, CAST(%%2 AS VARCHAR(32))))
TAGS (
did INT AS %%2
)
AS
SELECT
CAST(_tlocaltime / 1000000 AS TIMESTAMP) AS dts,
CAST(3 AS INT) AS statis_type,
CAST(TO_CHAR(CAST(_tlocaltime / 1000000 AS TIMESTAMP), ‘yyyymmdd’) AS VARCHAR(8)) AS date_tag,
LAST(v) AS v
FROM %%tbname
UNION ALL
SELECT
CAST(_tlocaltime / 1000000 AS TIMESTAMP) AS dts,
CAST(2 AS INT) AS statis_type,
CAST(TO_CHAR(CAST(_tlocaltime / 1000000 AS TIMESTAMP), ‘yyyymmdd’) AS VARCHAR(8)) AS date_tag,
MAX(v) AS v
FROM %%tbname
UNION ALL
SELECT
CAST(_tlocaltime / 1000000 AS TIMESTAMP) AS dts,
CAST(1 AS INT) AS statis_type,
CAST(TO_CHAR(CAST(_tlocaltime / 1000000 AS TIMESTAMP), ‘yyyymmdd’) AS VARCHAR(8)) AS date_tag,
MIN(v) AS v
FROM %%tbname
UNION ALL
SELECT
CAST(_tlocaltime / 1000000 AS TIMESTAMP) AS dts,
CAST(0 AS INT) AS statis_type,
CAST(TO_CHAR(CAST(_tlocaltime / 1000000 AS TIMESTAMP), ‘yyyymmdd’) AS VARCHAR(8)) AS date_tag,
AVG(v) AS v
FROM %%tbname;

1、请升级到 最新的 3.4 版本,3.3.8.x 这个分支已经不维护了。
2、请将 stream_probe.src_test 这个超级表的建表语句发送一下,我们本地测试一下,看看是否能够复现。

数据库:

CREATE DATABASE IF NOT EXISTS stream_probe PRECISION ‘ms’;

超级表:

CREATE STABLE IF NOT EXISTS stream_probe.src_test (
cts TIMESTAMP,
v DOUBLE
) TAGS (
did INT
);

子表:

CREATE TABLE IF NOT EXISTS stream_probe.src_test_1
USING stream_probe.src_test
TAGS (1);

插入数据:

INSERT INTO stream_probe.src_test_1 VALUES (NOW, 10.0);

我使用3.4.1.5版本测试了一下,是没有问题的。

请升级一下到 3.4.1.x 的最新版本吧。


这是我的测试情况。

现在看起来正常,我这边测试一段时间后会出现page exceeds dbFileSize的报错,导致td崩溃,影响到了其他正常的流和td的启动,请问已经出现这种情况了需要怎么才能恢复?

相关LOG:

{“log”:“05/06 09:20:00.450134 00000593 C UTL FATAL pgno:4227858434 exceeds dbFileSize:7308.\n”,“stream”:“stdout”,“time”:“2026-05-06T01:20:00.45021883Z”}
{“log”:“05/06 09:20:00.450152 00000593 C UTL FATAL tAssert at file /data/release/main/TDinternal/community/source/libs/tdb/src/db/tdbPager.c:847 exit:1\n”,“stream”:“stdout”,“time”:“2026-05-06T01:20:00.450236635Z”}

如果出现这种 td 崩溃,需要保存下来 core 文件,然后使用 gdb taosd <core文件> 来查看堆栈分析原因。

需要将 ulimit -c 打开,并配置生成core文件的目录。这个你AI查询一下,怎么配置吧。