关于高效写入

【TDengine 使用环境】
生产环境 /测试/ Poc/预生产环境 测试环境

【TDengine 版本】3.4.1

【操作系统以及版本】centos7.9

【部署方式】容器/非容器部署 非容器

【集群节点数】单体

【描述业务影响】近期在进行大批量数据入库的测试 为了提升写入效率 参考官方文档指引 使用了websocket的链接方式进行测试 按照官方给出的入库写法

但是进行大批量数据压测过程中 一直会提示 超过了最大并行请求数量

然后我就尝试看看 到底写入多少的时候 才会有这个错误 我代码脚本最大是压测20个设备数据量 然后一点点测试 发现当设备数量达到8的时候就会有这个报错 很频繁 7的时候就不会有; 然后我这边又换成了原生连接并且使用mybatis的foreach表情的写法 相同入库脚本 目前压测20个设备数据量是ok的 是比较稳定的

所以目前 想问下 这个websocket方式 我该如何调试保证其不报上述超过最大请求的错误呢 目前我的测试情况来看 我这边的业务来看 原生效果远大于websocket写入 这是websocket的连接配置jdbc:TAOS-WS://10.1.50.24:6041/mydb_unit8?asyncWrite=stmt&batchSizeByRow=10000&backendWriteThreadNum=5&cacheSizeByRow=100000

你现在是每批数据都创建 preparedStatment,这会严重影响性能。

你应该用生产者消费者模式,数据在队列里,消费线程一直去拉取。
请参考官网的例子,在一个线程中,复用连接,复用preparedStatement,然后一直循环去队列中拉取数据,这样性能才会好。

报错我怀疑你多线程写一个连接,一般不会报这个错误,默认一个连接能支持20个并发请求的。

这个截图的案例 能发下具体网址链接吗 我去看一下

高效写入 | TDengine 文档 | 涛思数据

1 个赞

这个我看了 我这边也是消费者模式 我这边使用的是rabbitmq 数据均是从mq来 数据格式进行了稍微的处理 然后进行我上面截图websocket方式的那种入库调用

然后我按照指引 我都改成一个消费者一个类的写法 下方是我新写的入库消费者 一旦我提升数据量 直接就把taosadapter服务给压垮了的感觉 测试之前 我是启动了这个服务的 然后我又重新启动了这个服务 就始终提示这个错误 我这个时候入库数据量很少

麻烦您这边抽空再看下

麻烦留下微信号,我们直接联系您。

我这边微信号是jjhDateUtils 我这边又换成了kafka 使用了websocket连接 一旦加大数据量 就会提示