在 CentOS 上优化 WebLogic 性能,一般从 操作系统、JVM、WebLogic 参数、应用架构 四个层面来做。下面给你一套比较系统、实战中常用的优化方案。
编辑 /etc/sysctl.conf,增加或修改以下内容:
# 网络性能
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 文件句柄
fs.file-max = 6553560
# 内存
vm.swappiness = 10
vm.dirty_ratio = 10
生效:
sysctl -p
WebLogic 高并发下非常依赖 FD。
编辑 /etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
检查:
ulimit -n
systemctl disable firewalld
systemctl disable postfix
(生产环境可按需保留防火墙)
路径示例:
$DOMAIN_HOME/bin/setDomainEnv.sh
-Xms8g
-Xmx8g
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+DisableExplicitGC
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/logs/heapdump
✅ 建议:
-Xlog:gc*:file=/logs/gc/gc_%p.log:time,uptime,level,tags
或 JDK8:
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/logs/gc/gc.log
<work-manager>
<name>HighConcurrencyWM</name>
<min-threads-constraint>10</min-threads-constraint>
<max-threads-constraint>200</max-threads-constraint>
</work-manager>
⚠️ 这是性能瓶颈重灾区
建议配置:
在 Admin Console:
$DOMAIN_HOME/bin/setDomainEnv.sh
确认:
-Dweblogic.NativeIOEnabled=true
Admin Console
Server → Configuration → Tuning
Accept Backlog = 2048
jstat -gc pidjstack pid| 项目 | 优化前 | 优化后 |
|---|---|---|
| TPS | 800 | 3500+ |
| GC 停顿 | 2s | <200ms |
| CPU | 90% | 60% |
你可以直接告诉我:
WebLogic 版本 + JDK 版本 + 服务器配置 + 并发量