Ubuntu上WebLogic连接超时的定位与解决
一、先快速定位超时类型
- 明确是哪一种“超时”:
- 访问管理控制台或应用首页的HTTP连接超时;2) 应用访问数据库的JDBC连接/获取连接超时;3) 执行慢SQL导致的语句级超时;4) 远程调试端口连不上的调试超时。
- 在Ubuntu上先做连通性与端口可达性验证:
- 对管理端口(如7001/7002)与数据库端口执行:
- nc -vz 或 telnet
- ss -lntp | grep 查看监听
- sudo ufw status / sudo iptables -S 检查防火墙
- 查看WebLogic日志:DOMAIN_HOME/servers//logs/*.log、AdminServer.out,关注关键字如“Connection timed out”“StuckThreadMaxTime”“JDBC”“Pool”等。
- 若为远程调试超时,注意区分“超时”与“拒绝”:超时常见于客户端网络配置问题(如代理设置为手动),而拒绝则是目标端口未监听或被防火墙阻断。
二、HTTP层面超时优化(Ubuntu与WebLogic两端)
- Ubuntu系统网络与内核参数(/etc/sysctl.conf 或 /etc/sysctl.d/99-weblogic.conf):
- 适度增大本地端口与连接队列:
- net.ipv4.ip_local_port_range = 1024 65535
- net.core.somaxconn = 4096
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_fin_timeout = 30
- 应用长连接/大报文场景可适度增大TCP缓冲区:
- net.core.rmem_default / rmem_max,net.core.wmem_default / wmem_max
- 执行 sysctl -p 使配置生效。
- WebLogic Server参数(Console:Servers → → Protocols → HTTP):
- 适当增大CompleteHTTPMessageTimeout(完整HTTP消息最大等待时间,秒),避免大表单/上传被提前中断。
- 按需调整PostTimeout(POST处理超时,秒),与前端/网关超时保持一致。
- 如存在空闲长连接被网络设备回收,可启用/调大KeepAliveSecs(保活间隔,秒)。
- 防火墙放行(示例):
- sudo ufw allow 7001,7002/tcp 或
- sudo firewall-cmd --permanent --add-port=7001/tcp --add-port=7002/tcp && sudo firewall-cmd --reload
三、JDBC连接池与数据库连通性优化
- 启用连接有效性测试(推荐值可按环境微调):
- Test Frequency:60 秒(定期体检物理连接)
- 勾选并配置:Test Reserved Connections / Test Created Connections / Test Released Connections
- Test Table Name:Oracle可用“SQL SELECT 1 FROM DUAL”,其他库填一个小表名
- 作用:失败连接会被关闭并重建,避免拿到“假死连接”。
- 获取连接与空闲回收:
- Connection Reserve Timeout:30 秒(获取连接等待超时)
- Inactive Connection Timeout:100–300 秒(归还前的最大空闲秒数,0表示不回收)
- 启动期容错:
- Connection Creation Retry Frequency:30 秒(数据库暂不可达时重试建连间隔)
- 连接泄漏排查与处置:
- 在Console启用Connection Leak Profiling / Connection Profiling,观察日志是否出现“A JDBC pool connection leak was detected”。
- 代码务必在finally块中关闭Connection/Statement/ResultSet(或等效框架管理)。
- 连接不足与等待:
- 监控 JDBC → Monitoring → 查看Waiting For Connection High Count,必要时提高Maximum Capacity,并结合业务峰值与SQL优化。
四、会话与应用层超时设置
- 避免多处配置互相覆盖,统一超时策略:
- web.xml(单位:分钟):
- 54(-1 永不过期;-2 使用weblogic.xml)
- weblogic.xml(单位:秒):
- 优先级:web.xml 覆盖 weblogic.xml。
- 若遇到处理耗时较长的请求被判定为“卡住”:
- 在Console:Servers → → Tuning 检查/适度调大StuckThreadMaxTime(默认600秒),并配合线程数、SQL优化与异步化改造。
五、远程调试连接超时的专项排查
- 现象:Eclipse/IDE“Failed to connect to remote VM. Connection timed out”。
- 要点:
- “超时”多为客户端到服务器的网络路径问题(如代理/手动网络配置错误);“连接被拒绝”多为端口未监听或被防火墙阻断。
- 在IDE中检查网络代理设置(如 Eclipse → Preferences → General → Network Connections,改为Native),再重试连接。
以上步骤覆盖了Ubuntu系统网络、WebLogic HTTP与JDBC、会话与应用层、以及远程调试的常见超时场景。建议按“定位类型 → 系统/网络 → WebLogic → 应用代码”的顺序逐步验证与调整,并每次只变更少量参数,配合日志与监控观察效果。