java mysql 连接超时_Java Mysql连接池配置和案例分析--超时异常和处理

前言:

最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测机制, 导致sql执行失败.

问题的表层根源, 看似简单, 但实际解决之路, 却显得有些曲折坎坷. 因此有必须分析下本质的原因, 以及Java Mysql连接池的处理策略和相关的配置项.

异常现象和问题本源:

服务的持久层依赖mysql, 采用连接池的机制来优化性能. 但服务空闲一段时间(切确地讲是mysql connection空闲一段时间), 下次使用时执行sql失败.

具体的异常, 可反映到具体的异常日志:

java mysql 连接超时_Java Mysql连接池配置和案例分析--超时异常和处理_第1张图片

当然除了异常的原因以外, 里面也提供了一个解决方案.

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

The last packet successfully received from the server was 47,302,202 milliseconds ago.

The last packet sent successfully to the server was 47,302,202 milliseconds ago.

is longer than the server configured value of 'wait_timeout'.

You should consider either expiring and/or testing connection validity before

你可能感兴趣的:(java,mysql,连接超时)