Taosadapter自动停止运行

【TDengine 使用环境】
测试

【TDengine 版本】

3.3.6.9 / 3.3.6.13

【操作系统以及版本】

centOS 7

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

docker容器部署

【集群节点数】

1

【集群副本数】

1

【问题复现路径/shan】做过哪些操作出现的问题

连续通过mybatis执行以下sql,第一次成功执行,第二次超时未响应同时taosadapter挂了

select last(ts) ts,
last(psid) psid,
last(eqtype) eqtype,
last(eqid) eqid,
last(datapoint) datapoint,
last(doublevalue)-first(doublevalue) doublevalue
from eq_realtime_data
where 1=1
  and ts >= #{param.startTime}
  and ts <![CDATA[<=]]> #{param.endTime}   
  and eqtype = #{param.eqType} 
  and datapoint = #{param.dataPointList[0].code}
partition by tbname

【遇到的问题:问题现象及影响】

需要计算一小时内某一个数据点的首尾差值,但是当上述sql执行到第二次时(传值有变化),无法获取结果,taosadapter挂了,tdengine数据库无法连接。

当将last(doublevalue)-first(doublevalue) 修改成 last(doublevalue) 时能成功执行,且没有问题。

【资源配置】

【报错完整截图】

taosadaper:

调用程序:

025-10-25T14:35:14.543+08:00  INFO 21696 --- [jngl-kpi-calc-server] [ntainer#1-0-C-1] c.j.m.k.c.c.AbstractKPICalculator        : 电表-时用电量 KPI calculate start 
2025-10-25T14:35:27.898+08:00  INFO 21696 --- [jngl-kpi-calc-server] [ntainer#1-0-C-1] c.j.m.k.c.c.AbstractKPICalculator        : 电表-时用电量 KPI calculate end 
2025-10-25T14:35:27.899+08:00  INFO 21696 --- [jngl-kpi-calc-server] [ntainer#1-0-C-1] c.j.m.k.c.c.AbstractKPICalculator        : 气表-时用气量 KPI calculate start 
2025-10-25T14:35:35.037+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-7] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.037+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-6] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.037+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-5] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.037+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-8] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.037+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-3] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.037+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-1] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.037+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-4] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.037+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-2] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.038+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [y-eventloop-1-9] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:35:35.038+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [-eventloop-1-10] c.t.jdbc.ws.WebSocketClientHandler       : disconnect uri: 192.168.1.253:6041, code: 1000, reason: unknown, remote: true
2025-10-25T14:36:33.026+08:00 ERROR 21696 --- [jngl-kpi-calc-server] [ntainer#1-0-C-1] druid.sql.Statement                      : {conn-210005, pstmt-220000} execute error. select last(ts) ts,
        last(psid) psid,
        last(eqtype) eqtype,
        last(eqid) eqid,
        last(datapoint) datapoint,
        last(doublevalue)-first(doublevalue) doublevalue
        from eq_realtime_data   where 1=1   and ts >= ?     and ts  <=  ?           and eqtype = ?       and datapoint = ?         partition by tbname

java.sql.SQLException: ERROR (0x231e): java.util.concurrent.TimeoutException: ERROR (0x231e): failed to complete the task:action:stmt2_bind, reqId:1923074017381580831 within the specified time : 60000,MILLISECONDS
	at com.taosdata.jdbc.TSDBError.createSQLException(TSDBError.java:94) ~[taos-jdbcdriver-3.7.1.jar:na]
	at com.taosdata.jdbc.ws.Transport.send(Transport.java:243) ~[taos-jdbcdriver-3.7.1.jar:na]
	at com.taosdata.jdbc.ws.AbsWSPreparedStatement.executeBatchImpl(AbsWSPreparedStatement.java:1126) ~[taos-jdbcdriver-3.7.1.jar:na]
	at com.taosdata.jdbc.ws.AbsWSPreparedStatement.executeQuery(AbsWSPreparedStatement.java:156) ~[taos-jdbcdriver-3.7.1.jar:na]
	at com.taosdata.jdbc.ws.AbsWSPreparedStatement.execute(AbsWSPreparedStatement.java:131) ~[taos-jdbcdriver-3.7.1.jar:na]
	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3462) ~[druid-1.2.24.jar:na]
	at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:434) ~[druid-1.2.24.jar:na]
	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3460) ~[druid-1.2.24.jar:na]
	at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:434) ~[druid-1.2.24.jar:na]
	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3460) ~[druid-1.2.24.jar:na]
	at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:158) ~[druid-1.2.24.jar:na]
	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:483) ~[druid-1.2.24.jar:na]
	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65) ~[mybatis-3.5.19.jar:3.5.19]
	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80) ~[mybatis-3.5.19.jar:3.5.19]
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65) ~[mybatis-3.5.19.jar:3.5.19]
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) ~[mybatis-3.5.19.jar:3.5.19]
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.19.jar:3.5.19]
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.19.jar:3.5.19]
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90) ~[mybatis-3.5.19.jar:3.5.19]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:61) ~[mybatis-3.5.19.jar:3.5.19]
	at com.github.yulichang.interceptor.MPJInterceptor.intercept(MPJInterceptor.java:93) ~[mybatis-plus-join-core-1.4.13.jar:na]
	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.19.jar:3.5.19]
	at jdk.proxy2/jdk.proxy2.$Proxy190.query(Unknown Source) ~[na:na]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.19.jar:3.5.19]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.19.jar:3.5.19]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.19.jar:3.5.19]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:333) ~[mybatis-spring-3.0.4.jar:3.0.4]
	at jdk.proxy2/jdk.proxy2.$Proxy160.selectList(Unknown Source) ~[na:na]
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:194) ~[mybatis-spring-3.0.4.jar:3.0.4]
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164) ~[mybatis-plus-core-3.5.10.1.jar:3.5.10.1]
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77) ~[mybatis-plus-core-3.5.10.1.jar:3.5.10.1]
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:155) ~[mybatis-plus-core-3.5.10.1.jar:3.5.10.1]
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:92) ~[mybatis-plus-core-3.5.10.1.jar:3.5.10.1]
	at jdk.proxy2/jdk.proxy2.$Proxy166.getRealTimeDiffDataList(Unknown Source) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) ~[spring-aop-6.2.6.jar:6.2.6]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.2.6.jar:6.2.6]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.2.6.jar:6.2.6]
	at com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationInterceptor.invoke(DynamicDataSourceAnnotationInterceptor.java:57) ~[dynamic-datasource-spring-4.3.1.jar:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.2.6.jar:6.2.6]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223) ~[spring-aop-6.2.6.jar:6.2.6]
	at jdk.proxy2/jdk.proxy2.$Proxy167.getRealTimeDiffDataList(Unknown Source) ~[na:na]
	at com.jngl.module.data.datasource.service.tdengine.impl.TDHisEquipmentDataServiceImpl.getRealTimeDiffDataList(TDHisEquipmentDataServiceImpl.java:44) ~[classes/:na]
	at com.jngl.module.data.service.impl.RealTimeDataServiceImpl.getRealTimeDiffDataList(RealTimeDataServiceImpl.java:106) ~[classes/:na]
	at com.jngl.module.kpi.calc.calculator.AbstractKPICalculator.handleRealTimeDataDiff(AbstractKPICalculator.java:91) ~[classes/:na]
	at com.jngl.module.kpi.calc.calculator.hour.gm.GMHourGasUseCalculator.calculating(GMHourGasUseCalculator.java:19) ~[classes/:na]
	at com.jngl.module.kpi.calc.calculator.AbstractKPICalculator.calculate(AbstractKPICalculator.java:54) ~[classes/:na]
	at com.jngl.module.kpi.calc.service.impl.AbstractKPICalculateServiceImpl.lambda$processCalculators$0(AbstractKPICalculateServiceImpl.java:88) ~[classes/:na]
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) ~[na:na]
	at com.jngl.module.kpi.calc.service.impl.AbstractKPICalculateServiceImpl.processCalculators(AbstractKPICalculateServiceImpl.java:84) ~[classes/:na]
	at com.jngl.module.kpi.calc.service.impl.KPIHourCalculateServiceImpl.doCalc(KPIHourCalculateServiceImpl.java:30) ~[classes/:na]
	at com.jngl.module.kpi.calc.service.impl.AbstractKPICalculateServiceImpl.calcInTimeRange(AbstractKPICalculateServiceImpl.java:63) ~[classes/:na]
	at com.jngl.module.kpi.mq.consumer.kafka.KpiHourCalcConsumer.onMessage(KpiHourCalcConsumer.java:20) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:169) ~[spring-messaging-6.2.6.jar:6.2.6]
	at org.springframework.kafka.listener.adapter.KotlinAwareInvocableHandlerMethod.doInvoke(KotlinAwareInvocableHandlerMethod.java:45) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:119) ~[spring-messaging-6.2.6.jar:6.2.6]
	at org.springframework.kafka.listener.adapter.HandlerAdapter.invoke(HandlerAdapter.java:78) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:475) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.invoke(MessagingMessageListenerAdapter.java:421) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:85) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.onMessage(RecordMessagingMessageListenerAdapter.java:50) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeOnMessage(KafkaMessageListenerContainer.java:2887) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeOnMessage(KafkaMessageListenerContainer.java:2865) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:2777) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:2614) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:2503) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:2152) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeIfHaveRecords(KafkaMessageListenerContainer.java:1528) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:1466) ~[spring-kafka-3.3.5.jar:3.3.5]
	at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:1335) ~[spring-kafka-3.3.5.jar:3.3.5]
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run$$$capture(CompletableFuture.java:1804) ~[na:na]
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java) ~[na:na]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

那应该是服务端挂了, 在您的服务端机器上,设置ulimit -c unlimited, 然后启动taosd, 浮现一下,产生core 文件之后, gdb taosd core, 然后把堆栈信息发出来, 如果找不core文件,请用AI 查询一下如何用设置core 产生的路径。