weblogic在centos上如何进行性能调优
导读:CentOS 上 WebLogic 性能调优实操指南 一 基线与环境准备 运行模式与基础检查 将域设置为生产模式(产品模式默认值更偏向性能,如执行队列线程数、JDBC 连接池容量等),并优先使用64 位 JDK。确保服务器时间同步、NT...
CentOS 上 WebLogic 性能调优实操指南
一 基线与环境准备
- 运行模式与基础检查
- 将域设置为生产模式(产品模式默认值更偏向性能,如执行队列线程数、JDBC 连接池容量等),并优先使用64 位 JDK。确保服务器时间同步、NTP 正常。
- 资源与监控基线
- 预留20%~30% 内存给操作系统与文件系统缓存;避免将堆占满物理内存。
- 建立监控基线:CPU、内存、磁盘 I/O、网络、TCP 重传;WebLogic 控制台观察队列长度、线程使用、JDBC 活动连接等。常用工具:top、vmstat、iostat、netstat、jstat、jstack、jmap。
- 文件句柄与进程数
- 提升用户级文件句柄与进程数上限,编辑 /etc/security/limits.conf:
* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 - 在 systemd 服务单元中同步设置(如适用):
LimitNOFILE=65535、LimitNPROC=65535。
- 提升用户级文件句柄与进程数上限,编辑 /etc/security/limits.conf:
- 交换分区与内核网络
- 建议配置适度大小的 swap(例如物理内存的约1.5 倍),避免 OOM Killer 过早终止 WLS;按需调整
vm.swappiness。示例:/swapfile none swap sw 0 0 swapon -a - 可按需优化 TCP 队列与内核网络参数(如
net.core.somaxconn、net.ipv4.tcp_tw_reuse、net.ipv4.tcp_fin_timeout),并结合压测验证。
- 建议配置适度大小的 swap(例如物理内存的约1.5 倍),避免 OOM Killer 过早终止 WLS;按需调整
二 JVM 与 GC 调优
- 堆与元空间
- 生产环境建议 -Xms 与 -Xmx 等值,避免运行期扩缩堆带来的抖动;堆占用一般不超过物理内存的70%,为 OS 与其他进程留足余量。
- Java 8 使用Metaspace替代 PermGen;建议设置上限防止泄漏:
-Xms4g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
- 垃圾回收器选择
- 吞吐量优先(多核、批处理倾向):
-XX:+UseParallelGC -XX:+UseParallelOldGC - 低延迟优先(Web 交互倾向,Java 8+):
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=35 - 超大堆与极低暂停(Java 11+):
-XX:+UseZGC或-XX:+UseShenandoahGC
- 吞吐量优先(多核、批处理倾向):
- 常用诊断与稳定性参数
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/weblogic/heapdumps -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:/opt/weblogic/logs/gc_%t.log -XX:+DisableExplicitGC -XX:+UseCompressedOops -XX:+UseServer - 放置位置
- 推荐在域目录的 bin/setDomainEnv.sh 中设置
USER_MEM_ARGS或通过控制台“服务器 → 配置 → 服务器启动 → 参数”注入;二者并存时以控制台参数为准。
- 推荐在域目录的 bin/setDomainEnv.sh 中设置
三 WebLogic 服务器与网络参数
- 执行线程与工作管理器
- 版本差异:
- WLS 9/10 默认使用自调优线程池;如需固定上下限,可通过启动参数覆盖:
-Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=500。 - WLS 12c+ 使用Work Manager 模型,优先按业务划分 Work Manager,再在控制台设置共享容量与队列阈值,避免单一队列过载。
- WLS 9/10 默认使用自调优线程池;如需固定上下限,可通过启动参数覆盖:
- 过载保护
- 设置 Shared Capacity For Work Managers(默认 65536),当“排队+执行”请求超过阈值时,WLS 会拒绝低优先级请求,保护系统不被压垮。
- 版本差异:
- 网络与 I/O
- 调大 Accept Backlog(默认 50):在控制台“服务器 → 配置 → 调整”中提升,若仍出现 connection refused,可按约每次增加 25% 逐步调高,直至拒绝消失。
- 启用本地 I/O(Native IO):控制台“服务器 → 配置 → 优化”勾选,提升高并发下网络吞吐与处理能力。
- 会话与资源防护
- 限制并发 HTTP 会话(示例将内存会话上限设为 12):
< session-descriptor> < max-in-memory-sessions> 12< /max-in-memory-sessions> < /session-descriptor> - 配置 Panic Action=Exit the server process,在出现 OOME 时自动退出并由 Node Manager 重启,降低故障扩散风险。
- 限制并发 HTTP 会话(示例将内存会话上限设为 12):
四 JDBC 与连接池调优
- 容量与初始化
- 将 Initial Capacity 设为与 Max Capacity 相同,避免运行期扩容带来的连接风暴;容量上限需同时受数据库最大进程/会话数与WLS 线程数约束。
- 语句缓存与稳定性
- 合理调大 Statement Cache Size(提升 PreparedStatement 命中);注意数据库端游标上限需 ≥
Statement Cache Size × Max Capacity,否则会报游标不足。 - 出现连接泄漏或偶发挂起时,开启泄漏检测、测试连接、重试与超时等高级选项,并结合应用修复泄漏点。
- 合理调大 Statement Cache Size(提升 PreparedStatement 命中);注意数据库端游标上限需 ≥
- 典型经验值
- 以 4 核 CPU 为例,产品模式默认线程约 25/实例,可支撑约 100 线程;连接池最大值可先按“≥ 线程数”配置,再结合压测与数据库能力微调。
五 压测验证与常见症状处理
- 压测与迭代
- 使用 JMeter/Locust 等工具进行阶梯压测,每次仅调整1~2 个参数,对比RT、TPS、错误率、队列长度、GC 次数/停顿等指标,形成调优闭环。
- 关键监控命令
- 进程与 GC:
jstat -gc < pid> 1000、jmap -heap < pid>、jstack < pid>;必要时采集 thread dump/heap dump 分析阻塞与泄漏。
- 进程与 GC:
- 常见问题速查
- 高队列与“线程忙”日志:适度增加线程数或按业务拆分 Work Manager;同时优化慢 SQL/慢接口,避免仅靠加线程掩盖问题。
- 启动或首次访问慢(熵不足):在 $JAVA_HOME/jre/lib/security/java.security 将
securerandom.source改为file:/dev/./urandom,加速初始化。 - “连接被拒绝”:逐步增大 Accept Backlog,并核查防火墙/安全组/负载均衡连接空闲超时设置。
- 文件句柄不足:确认 limits.conf 与 systemd 配置生效(
ulimit -n),并检查应用是否泄漏文件/套接字。 - OOM 与不稳定:开启HeapDumpOnOutOfMemoryError、设置 Panic Action=Exit 并配合 Node Manager 自动拉起,缩短恢复时间。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: weblogic在centos上如何进行性能调优
本文地址: https://pptw.com/jishu/758887.html
