1

java/scala ワーカーから 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 スタックで同じエラーが発生しました。

今のところ手がかりがありません!助けてくれてありがとう!

4

1 に答える 1

0

これには複数の理由が考えられます。接続プールを適切に管理していない場合に発生する可能性があります。接続プールを自分で維持している場合 (または apache dhcp などを使用している場合) は、開いている接続が多すぎてすべてがブロックされるか、リソースを適切に管理していないかのいずれかです。

もう 1 つの理由として、次のことが考えられます: (1 か月以上前に発生しました)。一度に実行される長いクエリが多すぎる場合。プロシージャー側でいくつかの最適化を行い、動作を開始しました (読み取りロックを無効にすることにより)。

于 2013-08-29T18:27:24.217 に答える