温馨提示×

CentOS环境下WebLogic的内存设置如何调整

小樊
40
2025-11-01 21:45:57
栏目: 智能运维

CentOS环境下WebLogic内存设置调整步骤

1. 修改setDomainEnv.sh文件(核心JVM内存参数设置)

setDomainEnv.sh是WebLogic域级别的启动脚本,用于定义JVM堆内存、元空间等核心参数,是调整内存的主要入口。

  • 文件路径$DOMAIN_HOME/bin/setDomainEnv.sh(如/home/weblogic/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh)。
  • 关键参数说明
    • -Xms:JVM初始堆内存大小(如-Xms1024m表示初始分配1GB);
    • -Xmx:JVM最大堆内存大小(如-Xmx2048m表示最大允许使用2GB);
    • -XX:MaxMetaspaceSize(Java 8+替代-XX:MaxPermSize):元空间最大大小(如-XX:MaxMetaspaceSize=256m)。
  • 设置方法
    setDomainEnv.sh中找到WLS_MEM_ARGS相关段落(通常在文件中下部),修改为以下内容(根据环境选择生产/开发模式):
    if [ "$JAVA_VENDOR" = "Sun" ] || [ "$JAVA_VENDOR" = "Oracle" ]; then
      # 生产模式:分配更大内存
      export WLS_MEM_ARGS_64BIT="-Xms2048m -Xmx4096m -XX:MaxMetaspaceSize=512m"
      export WLS_MEM_ARGS_32BIT="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=256m"
    else
      # 非Sun/Oracle JDK(如OpenJDK),参数类似
      export WLS_MEM_ARGS_64BIT="-Xms2048m -Xmx4096m"
      export WLS_MEM_ARGS_32BIT="-Xms1024m -Xmx2048m"
    fi
    export WLS_MEM_ARGS=$WLS_MEM_ARGS_64BIT  # 默认使用64位模式
    
  • 注意-Xms-Xmx建议设置为相同值,避免堆内存动态扩展带来的性能损耗;-XX:MaxMetaspaceSize需根据应用元数据量调整(如Spring Boot应用建议≥256m)。

2. 修改startWebLogic.sh文件(补充JVM参数)

startWebLogic.sh是启动WebLogic服务器的入口脚本,可在其中添加额外的JVM参数(如GC策略、线程栈大小等)。

  • 文件路径$DOMAIN_HOME/startWebLogic.sh
  • 设置方法
    在文件顶部(JAVA_OPTIONS定义之后)添加以下内容:
    export JAVA_OPTIONS="$JAVA_OPTIONS -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=35"
    
    • -XX:+UseG1GC:启用G1垃圾收集器(适合大内存、低延迟场景);
    • -XX:MaxGCPauseMillis=200:设置最大GC停顿时间为200毫秒;
    • -XX:InitiatingHeapOccupancyPercent=35:当堆内存使用率达35%时触发并发GC周期。

3. 通过WebLogic控制台调整(可视化配置)

若不想修改脚本文件,可通过WebLogic管理控制台动态调整内存参数(需管理员权限)。

  • 操作步骤
    1. 登录控制台:http://<服务器IP>:7001/console(默认端口7001);
    2. 导航至环境→服务器→<服务器名称>→配置→启动
    3. 在“Java虚拟机”标签页下,修改“初始堆大小”(对应-Xms)和“最大堆大小”(对应-Xmx);
    4. 点击“保存”,然后重启WebLogic服务器使配置生效。

4. 验证内存设置是否生效

修改完成后,需重启WebLogic服务器(./stopWebLogic.sh./startWebLogic.sh),并通过以下方式验证:

  • 方法1:查看启动日志:检查$DOMAIN_HOME/servers/<服务器名称>/logs/<服务器名称>.log,搜索-Xms-Xmx等参数,确认是否加载了修改后的值;
  • 方法2:使用JConsole工具:运行jconsole(JDK自带),连接WebLogic进程,查看“内存”标签页中的“堆内存”使用情况,确认初始/最大内存是否符合设置;
  • 方法3:WebLogic控制台监控:登录控制台→监控→服务器→<服务器名称>→性能→内存,查看实时内存使用情况。

5. 注意事项

  • 内存分配原则-Xmx(最大堆内存)不应超过物理内存的70%(避免系统内存不足导致OOM);-Xms(初始堆内存)建议≥-Xmx50%(减少堆扩展次数);
  • 32位 vs 64位:若使用32位JDK,-Xmx最大支持1.8GB(受限于地址空间);64位JDK无此限制,但需确保操作系统支持大内存;
  • 元空间设置:Java 8及以上版本,-XX:MaxMetaspaceSize需根据应用元数据量调整(如大量使用反射、动态代理的应用需增大该值),避免OutOfMemoryError: Metaspace错误;
  • GC策略选择:生产环境推荐使用G1GC(-XX:+UseG1GC),适合大内存、低延迟场景;若使用CMS收集器(-XX:+UseConcMarkSweepGC),需调整-XX:CMSInitiatingOccupancyFraction(触发CMS GC的堆占用率)。

通过以上步骤,可完成CentOS环境下WebLogic内存设置的调整,优化应用性能并避免内存相关问题。

0