mysql - Linux Tomcat MySQL 连接失败

标签 mysql linux tomcat

我有一个在 Linux 上运行的 Tomcat 服务器,它访问远程 MySQL 服务器,突然间,在配置/程序或我所知道的任何内容没有任何变化的情况下,我开始得到以下错误跟踪:

SQLException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. [Ljava.lang.StackTraceElement;@12fd02da
 And the error stack is: 
 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. 
 The driver has not received any packets from the server. 
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
 at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
 at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
 at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:983) 
 at com.mysql.jdbc.MysqlIO.(MysqlIO.java:339) 
 at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2252) 
 at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2285) 
 at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2084) 
 at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:795) 
 at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:44) 
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
 at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
 at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
 at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400) 
 at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327) 
 at java.sql.DriverManager.getConnection(DriverManager.java:664) 
 at java.sql.DriverManager.getConnection(DriverManager.java:247) 
 at com.localhost.AtW.servlets.Dispatcher.doGet(Dispatcher.java:66) 
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 at org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:436) 
 at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:177) 
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
 at java.lang.Thread.run(Thread.java:745) Caused by: java.net.NoRouteToHostException: No route to host 
 at java.net.PlainSocketImpl.socketConnect(Native Method) 
 at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
 at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
 at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
 at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
 at java.net.Socket.connect(Socket.java:589) 
 at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:214) 
 at com.mysql.jdbc.MysqlIO.(MysqlIO.java:298) ... 41 more 

此外,我通常会在启动计算机后发出 Linux 命令 service iptables start,这会导致向 root 发送一封邮件,指出存在错误。到目前为止一切正常。

今天也发送了邮件,但是,这也很奇怪,邮件显示的日期是明天,即使在输入命令 date 时我看到了正确的日期日期和时间。不知道这两件事有没有什么联系。

我不知道问题是什么以及从哪里开始寻找。

最佳答案

我偶然发现了这个问题!!!

虽然 Linux 机器具有静态 IP,但运行 MySQL 的机器被配置为使用 DHCP。似乎网络交换机已重新启动,并且该机器偶然收到了不同的 IP,因此 TOMCAT 无法通信(IP 错误)。

我知道......我应该在发布问题之前检查一下。

无论如何,这可能对某些人有用...

关于mysql - Linux Tomcat MySQL 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36032647/

相关文章:

php - 如何使子列的名称按字母顺序排列?

java - 如何将springREST集成到wicket网站中?

c++ - Linux 将文档打印到标准输出或文件

linux - 为什么 cgroup 的内存子系统在进程允许内存超过 cgroup 限制时使用 oom-killer 而不是返回内存分配失败?

tomcat - 我不小心删除了 catalina.out 并且 Tomcat 没有重新创建它

java - 基于表单的身份验证

java - 如何在 tomcat 6.0 中发布 Apache-Axis Web 服务

java - 给定数据库结构可以在运行时更改,如何处理并发 SQL 更新

java - 如何从 jar 文件在 linux 命令行中执行 yum 安装?

mysql - 如何在MySQL中存储二进制数据