0

我有一个带有 Apache -> mod_jk -> Tomcat 6 -> MySQL 的 Ubuntu 服务器。每次 Tomcat 加载新的 *.war 或重新启动时,它都会给我这个错误:

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:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532)

现在奇怪的是:有时经过一段时间(有时是几分钟或几小时)并且什么都不做,应用程序就像一个魅力 - 没有任何其他错误。

连接是用 tomcat 本身(使用这个上下文容器)建立的,并用 127.0.0.1 上升,phpmyadmin 也没有问题。

4

1 回答 1

0

雷米,不幸的是,这个问题没有一个“简单”的答案,因为它在很多方面都有所不同。您收到的错误是一个一般的通信错误,tomcat 退回表示通信问题,而没有详细说明问题是什么。

首先,我建议检查您的 mysql 是否正在侦听 127.0.0.1,而不仅仅是 localhost。区分的原因是具有 ipv6 的服务器(即使它只是一个本地 ::1)将首先尝试首选此连接。

如果你做一个 netstat -an | grep LISTEN,你应该看到端口 3306。那个套接字在监听什么?确保这与您在 tomcat 设置中指定的内容相匹配,然后从那里继续。

于 2013-08-08T18:13:57.507 回答