繁体   English   中英

Spring Boot应用程序MySQL SocketTimeoutException

[英]Spring Boot application MySQL SocketTimeoutException

我有一个使用Spring Boot的应用程序,该应用程序作为守护程序运行,并且每24小时使用MySQL进行一次处理。 我昨天发布了它,今天它第一次尝试执行处理,但不幸的是,我得到了以下错误(相关的stacktrace段):

08:00:31.264 [pool-1-thread-1] ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
...
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
...
Caused by: java.net.SocketTimeoutException: connect timed out

我怀疑当时的MySQL出了什么问题,我更倾向于认为连接已过时,尽管我认为连接池应该解决这个问题。

是否有人遇到过这样的情况并能够解决。 请让我知道我还应该发布哪些其他相关信息。 这是我的application.properties ,当然没有安全信息:

spring.datasource.url=jdbc:mysql://<server>:3306/<schema>?characterEncoding=UTF-8&useUnicode=true
spring.datasource.username=<username>
spring.datasource.password=<password>
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

pom.xml相关内容:

... 
<properties>
    ...
    <mysql-connector-java.version>5.1.38</mysql-connector-java.version>
    <spring.boot.version>2.1.3.RELEASE</spring.boot.version>
    ...
</properties>

<dependencies>
    ...
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector-java.version}</version>
    </dependency>
    ...
</dependencies>
...

该应用程序使用Spring Boot提供的JdbcTemplate

1)由于创建的数据库连接不活动而发生

为了避免这种情况,您可以在application.properties中添加以下属性。

spring.datasource.testWhileIdle = true
spring.datasource.timeBetweenEvictionRunsMillis = 60000
spring.datasource.validationQuery = SELECT 1

这将通过简单地触发SELECT 1查询来结束活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM