Spring Batch应用程序 sqlcode -4499 sqlstate 08001

问题描述 投票:0回答:1

要求。

从包含100K记录的文件中读取数据。

对于每条记录,先从IBM DB2数据库表中获取数据,再从NuoDB数据库表中获取数据。

最后将更新后的记录插入到NuoDB数据库表中。

设计方法:采用Chunk-oriented处理方式,从文件中读取1000条记录,然后进行处理并写入数据库。

问题:在处理了约75K条记录,运行了近5个小时后,批处理程序失败,出现以下错误。

Hibernate: select ... the SELECT query for DB2
Hibernate: select ... the SELECT query for NuoDB
2020-06-08 22:00:00.187  INFO [ ,,,] 32215 --- [       Thread-9] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2a7f1f10: startup date [Mon Jun 08 17:22:51 BST 2020]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@3972a855
2020-06-08 22:00:00.192  INFO [ ,,,] 32215 --- [       Thread-9] o.s.c.support.DefaultLifecycleProcessor  : Stopping beans in phase 0
2020-06-08 22:00:00.193  INFO [ ,,,] 32215 --- [       Thread-9] o.s.i.endpoint.EventDrivenConsumer       : Removing {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
2020-06-08 22:00:00.193  INFO [ ,,,] 32215 --- [       Thread-9] o.s.i.channel.PublishSubscribeChannel    : Channel ' -1.errorChannel' has 0 subscriber(s).
2020-06-08 22:00:00.193  INFO [ ,,,] 32215 --- [       Thread-9] o.s.i.endpoint.EventDrivenConsumer       : stopped _org.springframework.integration.errorLogger
2020-06-08 22:00:00.195  INFO [ ,,,] 32215 --- [       Thread-9] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'taskScheduler'
2020-06-08 22:00:00.196  INFO [ ,,,] 32215 --- [       Thread-9] o.s.jmx.export.MBeanExporter             : Unregistering JMX-exposed beans on shutdown
2020-06-08 22:00:00.203  INFO [ ,,,] 32215 --- [       Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-06-08 22:00:00.203  INFO [ ,,,] 32215 --- [       Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-06-08 22:00:00.203  INFO [ ,,,] 32215 --- [       Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-06-08 22:00:00.203  INFO [ ,,,] 32215 --- [       Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2020-06-08 22:00:00.203  INFO [ ,,,] 32215 --- [       Thread-9] com.zaxxer.hikari.HikariDataSource       : HikariPool-3 - Shutdown initiated...
2020-06-08 22:00:00.210  INFO [ ,,,] 32215 --- [       Thread-9] com.zaxxer.hikari.HikariDataSource       : HikariPool-3 - Shutdown completed.
2020-06-08 22:00:00.210  INFO [ ,,,] 32215 --- [       Thread-9] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Shutdown initiated...
2020-06-08 22:00:00.211  INFO [ ,,,] 32215 --- [       Thread-9] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Shutdown completed.
2020-06-08 22:00:00.212  INFO [ ,,,] 32215 --- [       Thread-9] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2020-06-08 22:00:00.214  INFO [ ,,,] 32215 --- [       Thread-9] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

这个问题到底是什么原因造成的呢,是不是像数据库不能定期触发SELECT查询100K次,持续4-6小时。

我在DEBUG模式下以日志级别重新运行应用程序,得到的错误是这样的。

com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException: [jcc][t4][2030][11211][4.19.72] A communication error occurred during operations on the connection's underlying socket, socket input stream, 
or socket output stream.  Error location: Command timeout check.  Message: Command timed out. ERRORCODE=-4499, SQLSTATE=08001
java jpa db2 spring-batch nuodb
1个回答
0
投票

似乎你的数据库连接已经丢失。你需要重新启动你的作业实例。如果配置正确,你的作业应该从故障后的地方重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.