在 Debian 上运行 WebLogic Server 的调优,通常分为 操作系统层(Debian)、JVM 层、WebLogic 自身配置 和 应用层 四个方面。下面按实战经验给你一个较系统的调优指南。
WebLogic 连接多时会受限于 fd。
# 查看
ulimit -n
# 修改(临时)
ulimit -n 65535
# 永久(/etc/security/limits.conf)
weblogic soft nofile 65535
weblogic hard nofile 65535
并确保:
/etc/pam.d/common-session
session required pam_limits.so
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
vm.swappiness = 10
执行:
sysctl -p
生产环境建议:
swapoff -a
或至少降低 swappiness。
WebLogic 默认使用 Oracle JDK / OpenJDK。
在 setDomainEnv.sh 中:
USER_MEM_ARGS="-Xms4g -Xmx4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m"
export USER_MEM_ARGS
✅ 建议:
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-Xlog:gc*:file=/u01/logs/gc.log:time,uptime,level,tags
或旧版:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/u01/logs/gc.log
-Xss256k
不要手动改太多,但可设上限:
Servers → <server> → Threads
Minimum Threads Constraint: 16
Maximum Threads Constraint: 200
关键参数:
Test Connections On Reserve: true
Connection Creation Retry: 3
Protocols → TCP → Accept Backlog = 8192
Protocols → HTTP → Enable Keep Alives
推荐:
jstat -gcutiljstack| 现象 | 原因 |
|---|---|
| CPU 高 | GC / 死循环 |
| 响应慢 | 线程池满 |
| OOM | 堆太小 / 内存泄漏 |
| 连接拒绝 | fd / backlog |
USER_MEM_ARGS="-Xms8g -Xmx8g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xss256k"
Debian:
net.core.somaxconn=65535
WebLogic:
如果你能告诉我:
我可以给你 更精准的参数模板。