CentOS 上提升 WebLogic 效率的实用清单
一 操作系统与网络调优
- 提升文件描述符与进程数限制,避免“Too many open files”和线程创建失败:
- 临时:ulimit -n 65535;永久:在 /etc/security/limits.conf 增加
-
-
- weblogic soft nproc 2048
- weblogic hard nproc 4096
- 优化 TCP/IP 与端口范围,提升高并发连接能力:
- net.core.somaxconn 65535
- net.ipv4.ip_local_port_range 1024 65535
- net.ipv4.tcp_max_syn_backlog 1024
- net.ipv4.tcp_max_tw_buckets 5000
- net.ipv4.tcp_tw_reuse 1
- net.ipv4.tcp_fin_timeout 30
- 使配置生效:sysctl -p
- 降低 swap 倾向,减少抖动:
- 可选:提升脏页写回阈值,降低抖动(需结合业务与存储评估)
- 存储与网络:优先使用 SSD/NVMe、合理配置 RAID;确保带宽与延迟满足业务峰值。
二 JVM 与 GC 调优
- 堆大小与一致性:将 -Xms 与 -Xmx 设为相同值,减少运行时扩缩容带来的停顿;通常不超过物理内存的 70%,并预留内存给 OS 与其他进程。
- 垃圾回收器:Java 8 及以上优先 G1GC;示例:
- -XX:+UseG1GC
- -XX:MaxGCPauseMillis=200
- -XX:InitiatingHeapOccupancyPercent=45
- 元空间:限制并预分配,避免频繁扩容
- -XX:MetaspaceSize=512m
- -XX:MaxMetaspaceSize=1g
- 线程栈:高并发可适当降低以减少内存占用
- GC 日志与诊断(便于定位瓶颈):
- -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/weblogic/logs/gc.log
- 放置位置:编辑域目录 bin/setDomainEnv.sh,在 JAVA_OPTIONS 中追加上述参数,重启生效。
三 WebLogic 服务器与数据源关键参数
- 运行模式:生产环境启用 生产模式(Production Mode),获得更稳健的默认与监控能力。
- 线程与网络:在控制台 Servers → Tuning 适度提升 Accept Backlog(如 300–500),缓解高并发下新连接排队。
- 数据源连接池(JDBC):
- 合理设置 Initial Capacity / Maximum Capacity / Capacity Increment(如 10 / 100 / 3),避免频繁创建/销毁连接。
- 语句缓存:启用 Statement Cache,类型选 LRU,大小依应用 SQL 复用度调整;注意数据库对“打开游标”的限制,避免超限(示例:10 连接 × 2 实例 × 10 缓存 = 200 游标/库)。
- 连接健康检查:启用 Test Reserved Connections 与 Test Frequency,并设置 Test Table Name;可配合 Seconds to Trust an Idle Pool Connection 减少测试开销。
- 获取连接等待:开启 Connection Reserve Timeout 与 HighestNumWaiters,让请求在池满时可短暂等待,避免立即失败。
- 泄漏回收:设置 Inactive Connection Timeout 自动回收长时间未归还的连接(建议值如 1800 秒;默认 0 表示关闭)。
- 其他:可按需调整 重试创建频率、登录延迟、非活动连接超时;对 Oracle 等数据库可取消 Remove Infected Connections Enabled 以提升归还效率。
四 应用与部署配置
- 关闭/放宽开发期特性:在控制台将 Servlet 重新加载检查 设为 -1、JSP 页检查 设为 -1,减少文件扫描带来的开销。
- 连接管理:确认应用按规范 关闭 Connection/Statement/ResultSet,避免连接泄漏放大池压力。
- 缓存策略:合理使用应用级缓存(如热点数据、配置、会话),减少数据库往返。
- 日志级别:生产环境将 日志级别 调高(如 WARN/ERROR),减少同步日志 I/O。
五 监控、压测与迭代
- 监控手段:
- OS:top/vmstat/ss -s/netstat -s 观察 CPU、内存、网络与套接字状态。
- JVM:jstat -gc/-gcutil、jstack、VisualVM/JConsole 观察 GC 频率、停顿、线程与锁竞争。
- WebLogic:控制台监控 线程池、数据源、JVM 指标;使用 WLST/JMX 采集与基线对比。
- 调优流程:建立基线 → 设定单变量变更 → 压测(如 JMeter/Locust) → 复盘指标(RT、TPS、P95/P99、GC 停顿、错误率、DB 连接等待)→ 迭代参数 → 回归验证。
- 变更规范:所有参数先在 测试环境 验证,再灰度/滚动发布;保留回滚方案与变更记录。