下面给你一套针对 CentOS 优化 WebLogic 的实战思路,从操作系统 → JVM → WebLogic 参数 → 网络与存储逐层说明,适合生产环境参考。
编辑 /etc/sysctl.conf(或 /etc/sysctl.d/99-weblogic.conf):
# 网络连接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
# 文件句柄
fs.file-max = 655360
# 网络队列
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 4096
# TCP 缓冲区
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 禁用 swap(强烈建议)
vm.swappiness = 1
使生效:
sysctl -p
编辑 /etc/security/limits.conf:
weblogic soft nofile 65535
weblogic hard nofile 65535
weblogic soft nproc 65535
weblogic hard nproc 65535
确保使用
weblogic用户启动服务
systemctl disable firewalld
systemctl disable postfix
如果是公网环境,建议用 硬件防火墙或 iptables,而不是 firewalld。
编辑 setDomainEnv.sh:
JAVA_OPTIONS="-Xms4g -Xmx4g"
JAVA_OPTIONS="${JAVA_OPTIONS} -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m"
JAVA_OPTIONS="${JAVA_OPTIONS} -XX:+UseG1GC"
JAVA_OPTIONS="${JAVA_OPTIONS} -XX:MaxGCPauseMillis=200"
JAVA_OPTIONS="${JAVA_OPTIONS} -XX:+DisableExplicitGC"
JAVA_OPTIONS="${JAVA_OPTIONS} -Xlog:gc*:file=/data/logs/weblogic/gc.log:time,uptime,level,tags"
说明:
-XX:+UseConcMarkSweepGC
路径:
Console → Environment → Servers → your_server → Configuration → Threads
建议:
重点关注:
示例(Oracle):
Initial Capacity: 20
Max Capacity: 80
Inactive Connection Timeout: 300
WARNING 或 ERRORDEBUGnet.core.somaxconn = 4096
WebLogic 中:
Console → Servers → Configuration → Protocols → HTTP
Accept Backlog = 2048
确保:
libmuxer.so
libnative.so
存在并加载成功(WebLogic 启动日志中可见)
mount -o remount,noatime /data
jstat -gcutil <pid> 1000
jstack <pid> > thread.txt
netstat -antp | grep 7001
| 项目 | 建议 |
|---|---|
| OS | CentOS 7+/Rocky |
| JVM | JDK 8 / 11 |
| GC | G1 |
| 内存 | Xms=Xmx |
| 线程 | 100~300 |
| DB 连接池 | 30~80 |
| 文件句柄 | ≥65535 |
| Swap | 禁或极低 |
如果你愿意,可以告诉我:
我可以给你一份完全定制化的参数清单。