首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat与Mysql之间的“连接超时”

Tomcat与Mysql之间的“连接超时”
EN

Stack Overflow用户
提问于 2015-07-30 06:25:28
回答 2查看 2.9K关注 0票数 1

在Tomcat向Mysql发送请求时发出套接字异常。

这种情况在一天中大约发生10次。由于这种情况很少发生,这似乎是一个棘手的问题。有关于如何进一步调试/修复它的输入吗?

安装程序详细介绍了Linux上的 Tomcat;

Stacktrace

java.sql.SQLException: Communication link failure: java.net.SocketException, underlying cause: Connection timed out

开始嵌套异常

java.net.SocketException

消息:连接超时

STACKTRACE:

代码语言:javascript
复制
java.net.SocketException: Connection timed out

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.read(SocketInputStream.java:146)

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1392)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1539)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1930)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1168)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1279)

at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1225)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2278)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2225)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:1163)

at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:622)

at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.ja

va:235)

at com.sun.proxy.$Proxy16.executeQuery(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:701)

端嵌套异常

代码语言:javascript
复制
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1714)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1930)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1168)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1279)

at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1225)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2278)

at com.mysql.jdbc.Connection.execSQL(Connection.java:2225)

at com.mysql.jdbc.Statement.executeQuery(Statement.java:1163)

at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:622)

at org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport$StatementProxy.invoke(AbstractQueryReport.ja

va:235)

at com.sun.proxy.$Proxy16.executeQuery(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:701)
EN

回答 2

Stack Overflow用户

发布于 2015-07-30 07:04:47

请确保在您的应用程序使用后,您正在关闭连接。如果您没有关闭连接,那么在某个时候它将达到最大连接数。在此之后,您无法创建连接。只有在达到超时之后,mysql才会关闭该连接(实际上应该关闭该连接)。在此之后,您可以使用该连接。所以请检查您的连接关闭代码。

票数 0
EN

Stack Overflow用户

发布于 2015-07-30 07:05:50

异常java.net.SocketException:连接超时可能是由于许多原因。

但是,由于你提到你只在白天面对它几次,而且它正常工作,我认为检查以下两点中的一个可能会有帮助。

  1. 检查mysql的wait_timeout属性。检查此链接
  2. 检查mysql的max_connections属性。检查此链接
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31716525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档