使用JDBC连接DB2时程序挂起无输出,客户端报错ERRORCODE=-4499如何解决
DB2 JDBC连接超时挂起问题解决方案
报错翻译
你使用DB2客户端连接的报错翻译如下:
[jcc][t4][2030][14161][4.28.11] 连接底层套接字、套接字输入流或套接字输出流操作期间发生通信错误。错误位置:连接超时检查。消息:连接超时。ERRORCODE=-4499,SQLSTATE=08001
排查调整步骤
- 第一步:验证基础网络连通性
首先确认DB2服务端的IP、端口配置正确,在运行代码的机器上执行端口连通性测试命令:telnet <DB2服务器IP> <DB2端口号>或者nc -zv <DB2服务器IP> <DB2端口号>
如果端口不通,先确认DB2服务是否正常启动、防火墙/安全组是否放行了当前客户端IP的访问权限、端口映射是否正确。 - 第二步:优化JDBC连接参数,解决程序挂起问题
你的代码没有配置连接超时参数,会导致网络不通时程序无限等待挂起,修改代码增加超时配置,示例如下:Class.forName("com.ibm.db2.jcc.DB2Driver"); Properties connProps = new Properties(); connProps.setProperty("user", "<userid>"); connProps.setProperty("password", "<password>"); // 登录超时设置为30秒,单位为秒 connProps.setProperty("loginTimeout", "30"); // 套接字读写超时设置为60秒,避免后续操作无响应 connProps.setProperty("socketTimeout", "60000"); Connection con = DriverManager.getConnection("jdbc:db2://<server>:<port>/<database>", connProps); Statement stmt = con.createStatement(); - 第三步:检查驱动与服务端版本兼容性
确认你使用的jcc-11.5.0.0.jar驱动版本与DB2服务端版本匹配,如果服务端版本远低于11.5,更换为与服务端版本对应的jcc驱动即可。 - 第四步:确认DB2服务端配置
联系DBA确认DB2实例已启用TCP/IP远程连接权限、你的连接账号拥有远程访问权限。
内容的提问来源于stack exchange,提问作者Avishek
相关产品推荐
相关产品推荐

