温馨提示×

CentOS如何优化WebLogic

小樊
41
2026-08-20 02:08:15
栏目: 智能运维

下面给你一套针对 CentOS 优化 WebLogic 的实战思路,从操作系统 → JVM → WebLogic 参数 → 网络与存储逐层说明,适合生产环境参考。


一、CentOS 操作系统层面优化

1. 内核参数优化(sysctl)

编辑 /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

2. 文件描述符限制(ulimit)

编辑 /etc/security/limits.conf

weblogic soft nofile 65535
weblogic hard nofile 65535
weblogic soft nproc 65535
weblogic hard nproc 65535

确保使用 weblogic 用户启动服务


3. 关闭不必要服务

systemctl disable firewalld
systemctl disable postfix

如果是公网环境,建议用 硬件防火墙或 iptables,而不是 firewalld。


二、JVM 优化(最关键)

1. 推荐 JVM

  • 生产环境强烈推荐 Oracle JDK / OpenJDK 8 / 11
  • WebLogic 12c+ 建议 JDK 8u202+

2. JVM 参数示例(生产环境)

编辑 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"

说明:

  • Xms = Xmx(避免动态扩容)
  • G1 GC 适合大内存
  • 如果是老版本 WebLogic,可用 CMS:
-XX:+UseConcMarkSweepGC

三、WebLogic 自身优化

1. 线程池优化

路径:

Console → Environment → Servers → your_server → Configuration → Threads

建议:

  • Execute Queue / Work Manager
  • 初始线程数:50~100
  • 最大线程数:200~400(视 CPU 核数)

2. JDBC 数据源优化

重点关注:

  • Initial Capacity:10~20
  • Max Capacity:50~100
  • Statement Cache Size:50~100
  • 启用 Test Connections on Reserve

示例(Oracle):

Initial Capacity: 20
Max Capacity: 80
Inactive Connection Timeout: 300

3. JMS & 日志

  • 关闭不必要的 JMS
  • 日志级别改为 WARNINGERROR
  • 生产环境避免 DEBUG

四、网络与连接优化

1. 调整 Accept Queue

net.core.somaxconn = 4096

WebLogic 中:

Console → Servers → Configuration → Protocols → HTTP
Accept Backlog = 2048

2. 启用本地 I/O(Native IO)

确保:

libmuxer.so
libnative.so

存在并加载成功(WebLogic 启动日志中可见)


五、存储与磁盘优化

1. 磁盘建议

  • 应用 & 日志分盘
  • 使用 SSD / SAN
  • 禁止 WebLogic 目录放在 NFS

2. 关闭 atime

mount -o remount,noatime /data

六、监控与验证

1. 查看 GC

jstat -gcutil <pid> 1000

2. 查看线程

jstack <pid> > thread.txt

3. 查看连接

netstat -antp | grep 7001

七、推荐的生产配置总结

项目 建议
OS CentOS 7+/Rocky
JVM JDK 8 / 11
GC G1
内存 Xms=Xmx
线程 100~300
DB 连接池 30~80
文件句柄 ≥65535
Swap 禁或极低

如果你愿意,可以告诉我:

  • ✅ WebLogic 版本
  • ✅ JDK 版本
  • ✅ 并发量 / 业务类型
  • ✅ 物理机 or 虚拟机

我可以给你一份完全定制化的参数清单

0