【问题标题】:trying to connect to the mysql server on tomcat6: java.net.UnknownHostException试图连接到tomcat6上的mysql服务器:java.net.UnknownHostException
【发布时间】:2013-09-02 07:40:41
【问题描述】:

我在从我的 java/scala worker 连接到我的 mysql 服务器时遇到了一些麻烦。

这是我得到的堆栈跟踪:

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.GeneratedConstructorAccessor25.newInstance(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.6.0_27]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532) ~[na:1.6.0_27]
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:355) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2479) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at sun.reflect.GeneratedConstructorAccessor10.newInstance(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.6.0_27]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532) ~[na:1.6.0_27]
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at java.sql.DriverManager.getConnection(DriverManager.java:620) ~[na:1.6.0_27]
    at java.sql.DriverManager.getConnection(DriverManager.java:200) ~[na:1.6.0_27]
    at listen$IndexTransactionWorkerImpl.run(listen.scala:38) [indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at net.greghaines.jesque.worker.WorkerImpl.execute(WorkerImpl.java:630) [indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at net.greghaines.jesque.worker.WorkerImpl.process(WorkerImpl.java:600) [indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at net.greghaines.jesque.worker.WorkerImpl.poll(WorkerImpl.java:491) [indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at net.greghaines.jesque.worker.WorkerImpl.run(WorkerImpl.java:230) [indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at java.lang.Thread.run(Thread.java:679) [na:1.6.0_27]
Caused by: java.net.UnknownHostException: mysql-vip
    at java.net.InetAddress.getAllByName0(InetAddress.java:1229) ~[na:1.6.0_27]
    at java.net.InetAddress.getAllByName(InetAddress.java:1156) ~[na:1.6.0_27]
    at java.net.InetAddress.getAllByName(InetAddress.java:1092) ~[na:1.6.0_27]
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:249) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305) ~[indexer-worker-1.0-SNAPSHOT-jar-with-dependencies.jar:na]
    ... 29 common frames omitted

它工作正常,直到某个点,工作人员无法解析主机。如果我重新启动工作器,它会再次工作。

重要的是:我可以从机器上 ping 主机!

我尝试将 ipv4 与 Djava.net.preferIPv4Stack=true 一起使用,但在使用 ipv4 堆栈时遇到了同样的错误。

到目前为止我还没有任何线索!谢谢你们的帮助!

【问题讨论】:

  • 您是否已经尝试使用主机名而不是 IP 地址?
  • @Ankit ip 地址是动态的,我只能使用 mysql-vip 的主机名(可以从机器上ping)
  • 您是否尝试过使用完全限定的主机名而不仅仅是“mysql-vip”?域搜索路径可能有问题。
  • 好的,只是为了确认你使用这个模式对吗??jdbc:mysql://[host][,failoverhost...][:port]/[database]
  • 我正要请您检查解析器 conf 文件中的主机条目。可惜!!!这确实是一个有趣的问题。

标签: java mysql exception tomcat6


【解决方案1】:

这可能有多种原因 如果您没有正确管理连接池,可能会发生这种情况。从某种意义上说,如果你自己维护一个连接池(或者说使用 apache dhcp 或其他东西),那么要么你打开了太多的连接,所以一切都被阻塞了,要么没有很好地管理资源。

另一个原因可能是:(一个多月前发生在我们身上)。当一次执行太多长查询时。我们在程序方面做了一些优化,事情开始起作用了(通过禁用读锁)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多