【发布时间】:2021-06-08 18:16:11
【问题描述】:
我正在开发一个要求我每 24 小时刷新一次数据库中的数据的应用程序。我们可能有数百万数据要刷新。代码方面,一切都在我身边。观察结果如下,我能够立即刷新 50 万条记录。然后我去尝试刷新 500 万条记录。服务器应用程序没有崩溃,但我收到此警告:
WARN 2076 --- [l-1 housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - 检测到线程不足或时钟跳跃(housekeeper delta=51s629ms256µs700ns)。
最终,它会出现诸如服务器连接中断之类的异常......有问题的服务器是数据库服务器。
2021-03-10 13:35:38,420 ERROR [Thread-802] c.n.j.j.p.ProjectDAO [ProjectDAO.java:1145] Some error has occurred with your query.
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 33285ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:689)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:196)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:161)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
at com.nomadlogic.juju.jdbc.projectDAO.ProjectDAO.getRespondentsReadyForPostSync(ProjectDAO.java:1119)
at com.nomadlogic.juju.jdbc.projectDAO.ProjectDAO$$FastClassBySpringCGLIB$$85fa6901.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
at com.nomadlogic.juju.jdbc.projectDAO.ProjectDAO$$EnhancerBySpringCGLIB$$7f453eb9.getRespondentsReadyForPostSync(<generated>)
at com.nomadlogic.juju.post_synchronization.PostSynchronizationThread.run(PostSynchronizationThread.java:84)
Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
【问题讨论】:
-
您的数据库服务器无法处理负载? “如何高效批处理大量数据”的经典案例?
标签: java database multithreading hikaricp