【问题标题】:Extremely slow DB2 connectivity in JavaJava 中的 DB2 连接速度极慢
【发布时间】:2011-04-07 05:58:11
【问题描述】:

我正在尝试从我的 Java 应用程序连接到 Linux 服务器上的 IBM DB2 9 数据库。我正在使用db2jcc.jar(DB2 通用 JDBC 驱动程序)。

建立连接需要花费大量时间。有什么问题?我知道有很多因素可能导致这种情况,但我想深入了解根本原因。

【问题讨论】:

  • 好吧,我想通了。这正是我的问题 - www-01.ibm.com/support/docview.wss?uid=swg21270934。我正在与我的管理员联系以解决此问题。谢谢大家。非常感激。 – GPX 0 秒前
  • 确实,使用主机名而不是直接地址IP。连接时间大约 15 秒,现在是即时的。
  • 所以反向主机名查找工作不正常。通常这是一个 DNS 配置问题 - 现在我了解到它也可能是 Windows 域配置问题。

标签: java database jdbc db2


【解决方案1】:

首先我会尝试提高驱动程序的日志级别以进行调试甚至跟踪。这可能会给您一种简单的方法来查看它在尝试完成连接时挂在哪里。你在用 log4j 吗?

【讨论】:

  • 我没有使用 log4j。但我想我可以使用 JDBC 跟踪。如果你的意思是它只是冻结,那么挂起,不 - 它没有。它最终会连接起来。但每一次,都需要 20 秒(始终如一!)!
  • 您使用的是什么日志级别?它挂在什么日志语句上?
  • 我刚刚为 DriverManager 启用了 setLogWriter 方法。使用“getHostAddressFromIpAddr”方法到达该行需要时间
  • 你的 JDBC 连接字符串是什么?
  • jdbc:db2j:net://host-ip-address:port/DBSID
【解决方案2】:

检查您的 DNS 配置是否 100% 正确。

【讨论】:

  • 你能告诉我具体的方法吗?
【解决方案3】:

在客户端和服务器端建立跟踪。这应该允许您区分以下可能的问题:

  • 驱动程序实现缓慢(收到答复,但需要很长时间才能答复)
  • 网络很慢(两端周转很快,但中间有很大的中断)
  • 数据库反应缓慢(与第一个相同,但在服务器端)
  • 只是有很多东西来来回回

一旦您发现了问题,您就必须深入挖掘以了解为什么会出现这种情况。

【讨论】:

    【解决方案4】:

    发生这种情况是因为驱动程序对 IP 进行反向查找以解析主机名,一个简单的解决方法是将服务器和主机名添加到您的 System32\drivers\etc\hosts(如果您在 Windows 上)文件,然后使用您刚刚映射的主机名。 例如

    %WINDOWS%System32\drivers\etc\hosts

    128.0.0.200 DB_SERVER

    然后在您的应用程序中:

    jdbc:db2://DB_SERVER:55701/SCHEMA_NAME

    【讨论】:

      猜你喜欢
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      相关资源
      最近更新 更多