在 Linux 环境下优化 WebLogic 数据库连接,一般不会只调 WebLogic 本身,而是 WebLogic + 数据源 + JDBC + 数据库 + OS 协同优化。下面按最常见、最有效的顺序给你一个可落地的优化清单。
原则:
推荐公式(经验值):
连接池初始值 = 并发用户数 / 2
最大连接数 = 并发用户数 * 1.2
WebLogic 设置路径:
Console → Services → Data Sources → 你的数据源
→ Configuration → Connection Pool
关键参数:
| 参数 | 建议值 | 说明 |
|---|---|---|
| Initial Capacity | 10–50 | 启动即创建 |
| Max Capacity | 50–200 | 核心调优参数 |
| Min Capacity | 10–30 | 保持最小连接 |
| Statement Cache Size | 20–100 | 减少 SQL 解析 |
⚠️ 超过 300 个连接通常说明应用或 SQL 有问题
必须设置(生产环境)
Test Connections On Reserve:✅
Test Frequency:120(秒)
Test Table Name:DUAL(Oracle)或任意小表
✅ 防止数据库重启、防火墙断连导致报错
| 参数 | 建议 |
|---|---|
| Connection Timeout | 30–60 秒 |
| Inactive Connection Timeout | 60–120 秒 |
| Max Wait Time | 30–60 秒 |
✅ 防止连接被长时间占用
jdbc:oracle:thin:@//host:1521/service
建议加参数:
tcp.nodelay=true
useSSL=false
rewriteBatchedStatements=true
cachePrepStmts=true
prepStmtCacheSize=500
WebLogic MaxCapacity ≤ 数据库 process / sessions
Oracle 示例:
show parameter processes;
show parameter sessions;
⚠️ 否则会直接报:
ORA-12519 / ORA-00020
WebLogic 只是“管道”,慢 SQL 才是真凶
排查方式:
✅ 加索引
✅ 避免 SELECT *
✅ 减少大事务
WebLogic 一个连接 ≈ 一个 socket
ulimit -n
建议:
* soft nofile 65536
* hard nofile 65536
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
防止大量 TIME_WAIT
路径:
Servers → 你的Server → Configuration → General
建议:
| 现象 | 原因 | 优化 |
|---|---|---|
| 连接池耗尽 | 连接未关闭 | 检查代码 / Inactive Timeout |
| 请求卡死 | 数据库慢 | 优化 SQL |
| 偶发无法连接 | 防火墙断连 | 开启 Test Connection |
| CPU 飙高 | 连接过多 | 降低 MaxCapacity |
200 并发用户
Initial Capacity = 20
Max Capacity = 100
Min Capacity = 20
Statement Cache = 50
Test Frequency = 120
Inactive Timeout = 60
我可以给你非常精确的建议,只需要你提供:
我可以直接帮你算一套最优连接池参数。