0

我目前正在运行一些对 mysql 数据库进行大量调用的 java 代码。这些调用淹没了数据库,在代码运行几个小时后,我得到了一个嵌套异常:

java.io.EOFException
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1934)
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2380)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2909)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:798)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3700)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1203)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2572)


Last packet sent to the server was 8789 ms ago.
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2592)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2909)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:798)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3700)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1203)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2572)

不幸的是,我对这类问题没有太多经验,谁能推荐一些方法来确保我的所有查询都能得到处理?

我可以理解这是一个非常广泛的问题,但查询本身并不难,它更多的是我请求的查询数量的规模。

谢谢

4

1 回答 1

1

我会在 OS/MySql/Web 服务器级别对此进行故障排除。换句话说,这本身不是“Java”问题。这可能更像是一个“系统性能/系统配置”问题。

建议:

1) 您没有指定您的操作系统、Web 服务器/应用程序服务器。这些是关键。

2) 运行基本性能检查(Linux 的 ps -eaf 和 iostat,Windows 的 Task Mgr/CPU/Memory/Networking stats)。特别注意“netstat”(Linux 和 Windows)。

3) 查看所有相关日志(Linux 的 /var/log/messages 等;Windows 的 EventVwr 等)

4) 检查您的操作系统、数据库和 Web 服务器配置设置。

5) 特别注意可能的“陈旧连接”和与数据库相关的“连接池”参数。

检查这些链接:

于 2012-08-26T03:38:21.140 回答