在 Debian 上优化 WebLogic(通常运行在 Oracle JDK/JRockit 或 OpenJDK 上),可以从操作系统、JVM、WebLogic 自身配置、应用和监控几个层面入手。下面是一套较系统的优化建议。
编辑 /etc/sysctl.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 = 6553560
应用:
sysctl -p
编辑 /etc/security/limits.conf:
weblogic soft nofile 65536
weblogic hard nofile 65536
weblogic soft nproc 65536
weblogic hard nproc 65536
使用专用用户(如
weblogic)运行,不要用 root
apt install openjdk-11-jdk
在 setDomainEnv.sh 或 startWebLogic.sh 中:
JAVA_OPTIONS="-Xms4g -Xmx4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m"
JAVA_OPTIONS="$JAVA_OPTIONS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
JAVA_OPTIONS="$JAVA_OPTIONS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/dump"
建议:
-Xms = -Xmx(避免动态扩缩)-Xlog:gc*:file=/opt/logs/gc.log:time
Console → Servers → Configuration → Threads
Maximum Thread Constraint = 200~400
Initial Capacity: 20
Max Capacity: 100
Statement Cache Size: 50
Test Connections On Reserve: true
确保使用:
WebLogic Native IO (libmuxer.so)
Debian 需安装:
apt install libaio1
Protocols → HTTP → Enable Keepalive = true
jstat -gcutil <pid> 1000
jmap -heap <pid>
top
vmstat 1
iostat -x 1
| 问题 | 可能原因 |
|---|---|
| CPU 高 | GC 频繁 / 死循环 |
| 内存溢出 | 堆太小 / 内存泄漏 |
| 响应慢 | 线程阻塞 / DB 慢 |
| 连接拒绝 | 文件句柄不足 |
如果你能提供:
我可以给你更精确的参数模板。