如何解决Ubuntu上WebLogic连接超时问题
导读:Ubuntu上WebLogic连接超时的定位与解决 一、先快速定位超时类型 查看日志关键字: 出现 BEA-000449 Closing socket as no data read … idle timeout of 5 secs,多...
Ubuntu上WebLogic连接超时的定位与解决
一、先快速定位超时类型
- 查看日志关键字:
- 出现 BEA-000449 Closing socket as no data read … idle timeout of 5 secs,多为空闲读超时(读空闲被服务器关闭)。
- 出现 java.net.SocketTimeoutException: Read timed out,多为读取阶段超时(服务器等待请求体/数据未完成)。
- 出现 BEA-001112 Test “select count(*) …” failed … last packet … longer than server configured value of ‘wait_timeout’,多为数据库服务端wait_timeout导致连接被数据库关闭,而WebLogic还在用。
- 出现 StuckThreadMaxTime(如600秒)相关告警,多为应用处理时间过长被判定为“卡住线程”。
- 出现 ResourceLimitException: No resources currently available in pool,多为连接池耗尽/获取连接超时。
二、按场景给出解决方案
-
空闲读超时(BEA-000449)
- 现象:后台周期性打印“Closing socket … idle timeout …”,默认约5秒。
- 处理:在控制台提高服务器常规监听端口的登录超时(Login Timeout),路径:环境 > 服务器 > AdminServer > 优化 > 登录超时,将默认值5000 ms适当调大(如30000–60000 ms);若仅为日志干扰,也可选择过滤该类提示。注意该值过大可能掩盖真实网络/客户端问题。
-
读取阶段超时(Read timed out)
- 现象:日志含 Read timed out,堆栈指向 CompleteMessageTimeout / IdleConnectionTimeout / socket timeout 等。
- 处理:在控制台提高Complete Message Timeout(如480–1200秒)与Idle Connection Timeout(如600秒);同时评估网络质量、客户端行为、上传/大数据量处理耗时,必要时优化SQL/分页/流式传输,避免单次请求处理过久。
-
数据库侧导致的超时(BEA-001112、连接被DB关闭)
- 现象:数据源“Test”失败,提示超过数据库 wait_timeout。
- 处理:
- 将连接池的Test Frequency(如30–60秒)设置为小于数据库的 wait_timeout(如120秒),并启用测试保留/创建/释放的连接,指定Test Table Name,避免拿到已被数据库关闭的“假活”连接。
- 同步评估并适度调大数据库 wait_timeout,或优化慢SQL/索引,减少长事务。
-
连接池耗尽或获取连接超时
- 现象:ResourceLimitException,活跃连接长期占满。
- 处理:在数据源上调大Maximum Capacity(略高于峰值并发),并优化慢SQL/锁竞争;必要时结合线程转储分析线程在等什么资源。
-
事务超时(JTA)
- 现象:weblogic.transaction.internal.TimedOutException: Transaction timed out after 300 seconds。
- 处理:在控制台提高JTA Timeout Seconds;务必保证该值小于连接池的Inactive Connection Timeout,避免事务还未提交,连接已被连接池回收。
-
会话超时(应用层)
- 现象:用户会话提前失效、登录态丢失。
- 处理:统一会话超时配置,避免冲突。优先级为:web.xml 的 (单位:分钟) > weblogic.xml 的 TimeoutSecs(单位:秒);如需统一在控制台管理,建议删除 web.xml 中的 定义。
三、Ubuntu系统层面的网络优化
- 调整内核网络参数(/etc/sysctl.conf 或 /etc/sysctl.d/99-weblogic.conf),示例:
- 增大本地端口与连接队列:net.ipv4.ip_local_port_range、net.core.somaxconn
- 启用快速回收/复用:net.ipv4.tcp_tw_reuse、net.ipv4.tcp_tw_recycle(按需)
- 增大全连接/半连接队列与超时:net.core.netdev_max_backlog、net.ipv4.tcp_max_syn_backlog、net.ipv4.tcp_fin_timeout
- 调整TCP缓冲区:net.core.rmem_default、net.core.wmem_default、net.core.rmem_max、net.core.wmem_max
- 应用生效:sysctl -p
- 保障网络质量与容量:使用高性能网卡/交换机、合理规划带宽与延迟,并在必要时引入负载均衡/反向代理分担连接与故障转移。
四、推荐参数基线(示例,需结合实际压测微调)
- 服务器监听与消息
- Login Timeout:30000–60000 ms
- Complete Message Timeout:600–1200 s
- Idle Connection Timeout:600 s
- JDBC 数据源
- Test Frequency:30–60 s
- 启用:Test Reserved/ Created/ Released Connections,配置Test Table Name
- Inactive Connection Timeout:300–600 s
- Maximum Capacity:按峰值并发+安全余量设置
- 事务
- JTA Timeout Seconds:小于 Inactive Connection Timeout(如300 s)
- 会话
- 统一在控制台用 weblogic.xml TimeoutSecs(秒)管理,避免与 web.xml 冲突。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何解决Ubuntu上WebLogic连接超时问题
本文地址: https://pptw.com/jishu/755588.html
