在 Debian 上部署 Oracle WebLogic Server 时,调优通常围绕 操作系统、JVM、WebLogic 自身、应用架构 四个层面进行。下面给你一套可落地的 WebLogic 调优指南(Debian 场景)。
编辑 /etc/sysctl.conf 或 /etc/sysctl.d/99-weblogic.conf:
# 网络
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 文件句柄
fs.file-max = 2097152
# 虚拟内存
vm.swappiness = 10
vm.dirty_ratio = 10
生效:
sysctl -p
WebLogic 对 文件句柄 非常敏感。
编辑 /etc/security/limits.conf:
weblogic soft nofile 65536
weblogic hard nofile 131072
weblogic soft nproc 65536
weblogic hard nproc 131072
如果使用 systemd 启动,还需要:
# /etc/systemd/system/weblogic.service
[Service]
LimitNOFILE=131072
LimitNPROC=65536
systemctl disable bluetooth
systemctl disable cups
查看:
java -version
编辑:
$DOMAIN_HOME/bin/setDomainEnv.sh
示例(生产环境):
USER_MEM_ARGS="-Xms4g -Xmx4g
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+ParallelRefProcEnabled
-XX:+DisableExplicitGC"
export USER_MEM_ARGS
USER_MEM_ARGS="-Xms4g -Xmx4g
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200"
export USER_MEM_ARGS
✅ 经验建议
WebLogic 10+ 使用 自调优线程池,一般不建议手动改。
但可限制最大值:
Servers → <server> → Configuration → Tuning
Maximum Queue Length = 4096
Stuck Thread Max Time = 600
这是 性能瓶颈最常见的地方。
建议配置:
在 config.xml 或控制台中:
生产环境:
Log Level: WARNING
Debug: 全部关闭
避免:
-Dweblogic.debug.DebugHttp
确保使用:
Use Native IO = true
Accept Backlog = 4096
Login Timeout = 25
生产环境 不要直接暴露 WebLogic
推荐架构:
Nginx / Apache → WebLogic
好处:
top -H -p <pid>
jstack <pid> > stack.txt
jmap -histo:live <pid>
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/logs/gc.log
apt install chrony
systemctl enable chronyd
WebLogic 集群对时间非常敏感。
cat /sys/block/sda/queue/scheduler
推荐:
deadline / mq-deadline
| 项目 | 推荐 |
|---|---|
| OS | Debian 11/12 |
| JVM | JDK 11 LTS |
| Heap | 4–8 GB |
| GC | G1 |
| 文件句柄 | ≥ 65536 |
| 线程池 | 自调优 |
| 数据源 | 连接池 + 缓存 |
| 前端 | Nginx |
你可以直接告诉我:
我可以给你 一份针对你环境的精确调优参数清单。