首页 > 解决方案 > 一段时间后Mysql无法连接

问题描述

我正在使用石英作业每 10 分钟获取一次记录。我的作业成功运行了 2 小时。2 小时后我无法连接到 mysql。它说下面的错误

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
2019-11-12 20:30:08 ERROR DbUtils:44 - error during creating mysql connection ,stacktracesun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
com.mysql.jdbc.Util.getInstance(Util.java:408)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2095)
com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2020)
com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:768)
com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:385)
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:323)
java.sql.DriverManager.getConnection(DriverManager.java:664)
java.sql.DriverManager.getConnection(DriverManager.java:247)
com.network.assets.airwave.DbUtils.createConnection(DbUtils.java:34)
com.network.assets.airwave.AirWaveService.getDevices(AirWaveService.java:384)
com.network.assets.airwave.AirWaveService.loadDeviceIpListMemory(AirWaveService.java:45)
com.network.assets.core.api.impl.AssetLiveJob.execute(AssetLiveJob.java:158)
org.quartz.core.JobRunShell.run(JobRunShell.java:202)
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)

如果我停止应用程序并重新启动,它再次成功运行 1 或 2 小时,我得到同样的异常。

笔记:

我编写了简单的 java 代码来连接到 db 作为另一个应用程序。我成功地运行了它的连接。但它给出了以下警告,

Tue Nov 12 19:16:04 IST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

开发环境我无法重现该问题。

任何想法?。

标签: javamysqlssljdbc

解决方案


推荐阅读