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,多为连接池耗尽/获取连接超时。
二、按场景给出解决方案
三、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 冲突。