温馨提示×

centos中weblogic资源如何分配

小樊
31
2025-12-05 22:40:26
栏目: 智能运维

CentOS 上 WebLogic 资源分配实操指南

一 系统层资源限制

  • 文件描述符与进程数:提升 WebLogic 可打开的文件描述符上限,避免“too many open files”。临时生效:ulimit -n 65535;永久生效在 /etc/security/limits.conf 增加(示例以 weblogic 用户为例):
    weblogic soft nofile 65535
    weblogic hard nofile 65535
    weblogic soft nproc  65535
    weblogic hard nproc  65535
    
    注意:需重新登录或通过 systemd 服务生效(在服务单元中设置 LimitNOFILE)。
  • 虚拟内存限制:如需限制 WebLogic 进程的虚拟内存,可在启动前执行 ulimit -v 524288000(单位字节,示例为512MB),或在 /etc/security/limits.conf 配置 vmem 项。
  • 内核网络与交换:适度降低交换倾向、优化 TCP 回收,提高响应与稳定性(示例值,按实际压测微调):
    # /etc/sysctl.conf
    vm.swappiness = 10
    vm.dirty_ratio = 100
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30
    
    应用:sysctl -p
    以上设置能为 WebLogic 提供充足的文件句柄与网络资源,并减少抖动与连接拒绝。

二 JVM 堆与非堆内存分配

  • 堆内存:生产环境建议将初始堆与最大堆设为相同,减少堆动态扩缩带来的停顿;堆总量一般不超过物理内存的70%,为 OS 与其他进程预留资源。示例:-Xms8g -Xmx8g
  • 年轻代:可设置为堆的约1/3–1/2,如 -Xmn6g,并配合 Survivor 区比例(如 -XX:SurvivorRatio=8)。
  • 元空间(Java 8+):默认无上限,建议设置上限避免泄漏,如 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
  • GC 选择:
    • 吞吐量优先(Java 8):-XX:+UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=<CPU核数>
    • 低延迟优先(Web 应用常用):-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1ReservePercent=15 -XX:InitiatingHeapOccupancyPercent=35
    • Java 11+ 超低暂停:-XX:+UseZGC-XX:+UseShenandoahGC
  • 诊断与保护:发生 OOM 时生成堆转储,记录 GC 日志,便于定位与回溯:
    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/weblogic/heapdumps
    -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:/opt/weblogic/logs/gc_%t.log
    -XX:+DisableExplicitGC
    
  • 配置方式:
    • 脚本方式:在域目录 bin/setDomainEnv.sh 中设置 USER_MEM_ARGSMEM_ARGS
    • 控制台方式:登录 WebLogic 控制台 → 环境 → 服务器 → 目标服务器 → 配置 → 服务器启动 → 参数,填入上述 JVM 参数。
      上述做法覆盖堆/元空间、GC 策略与诊断开关,是生产稳定运行的基线。

三 WebLogic 内部关键资源

  • 执行线程与工作队列:在控制台“配置 → 服务器 → 配置 → 服务器启动/调优”中调整线程相关参数(如线程计数、递增、最大线程数),并关注“堵塞线程”阈值与定时器,避免请求堆积与线程饥饿。
  • 数据源连接池:合理设置 InitialCapacityMaxCapacityStatementCacheSize,并结合业务峰值与数据库承载能力做压测校准,避免连接风暴与资源争用。
  • 运行模式:将域设置为产品模式(生产默认更保守、性能更稳),开发模式默认线程与连接池容量较小,不适合压测与生产。
  • 网络与 I/O:适度提高 Accept Backlog 以应对突发连接;在条件允许时启用 Native I/O 提升网络吞吐与静态资源处理能力。
    这些参数直接决定 WebLogic 的并发处理与稳定性,应与 JVM 与系统资源联动调优。

四 分配示例与容量规划

  • 场景示例(单机双实例,物理内存32GB,逻辑 CPU8核):
    • 操作系统与其他服务预留:约4–6GB
    • 每个实例堆:-Xms10g -Xmx10g;年轻代:-Xmn4g;元空间:-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
    • GC:-XX:+UseG1GC -XX:MaxGCPauseMillis=200
    • 线程与连接池:结合压测逐步调大,关注队列等待与 DB 连接利用率
    • 文件描述符:系统级与用户级均≥65535
  • 并发经验值:可按“并发用户 ≈ 线程数 × 每线程可承载请求数”估算,常见经验是每个 Server 维持约20并发线程较优;例如目标1000并发,可考虑4个受管 Server,单实例初始25、最大100线程,再按压测微调。
  • 监控与迭代:用 jstat -gc <pid> 1000jmap -heap <pid>jstack <pid> 观察 GC、堆与线程;每次仅调整1–2个参数,建立基准→压测→复盘→再调的闭环。
    上述示例给出可落地的起点值,务必在测试环境验证后再推广至生产。

0