You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java JDBC连接PostgreSQL时出现Socket超时异常求助

PostgreSQL JDBC连接超时(SocketTimeoutException)排查方案

从报错信息看,核心是java.net.SocketTimeoutException: connect timed out,说明应用虚拟机无法建立到PostgreSQL服务器的TCP连接,而非PostgreSQL的认证或配置问题(你已确认pgAdmin能正常连接,pg_hba.conf和listen_addresses配置正确)。按以下步骤排查:

  • 测试应用到数据库的网络连通性
    在应用虚拟机上执行以下命令:

    1. 测试IP可达性:ping 192.168.44.38,如果丢包或无响应,说明两台机器网络不通
    2. 测试端口开放情况:telnet 192.168.44.38 5432 或 nc -zv 192.168.44.38 5432,如果无法连接,说明5432端口被拦截
  • 检查数据库服务器的防火墙/安全组
    确认数据库虚拟机的本地防火墙(如iptables、firewalld)是否允许192.168.14.147访问5432端口:

    • 对于firewalld:firewall-cmd --list-all,查看是否有postgresql服务或自定义的5432端口规则,源地址包含192.168.14.147
    • 对于iptables:iptables -L -n,检查INPUT链是否有允许5432端口的规则
  • 验证PostgreSQL监听状态
    在数据库服务器上执行ss -tulpn | grep postgres,确认输出中包含0.0.0.0:5432或:::5432,确保PostgreSQL确实在监听所有地址的5432端口

  • 检查应用虚拟机的网络限制
    确认应用机器是否有出站防火墙规则,禁止访问5432端口;同时检查路由表,确保应用机器能正确路由到192.168.44.38网段

  • 临时调整JDBC连接超时参数(可选)
    如果网络存在轻微延迟,可尝试在连接串中延长超时时间:

    String postgresConnectionUrl = "jdbc:postgresql://192.168.44.38:5432/my_db?connectTimeout=30000&socketTimeout=60000";
    

    注意:这只是临时 workaround,核心解决方向还是修复网络连通问题

内容的提问来源于stack exchange,提问作者RIP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:06:37