温馨提示×

WebLogic在Linux上如何资源管理

小樊
36
2025-12-26 06:31:50
栏目: 智能运维

Linux上WebLogic资源管理实践指南

一 操作系统层资源限制

  • 文件句柄与进程数
    • 查看与临时调整:使用 ulimit -n(打开文件数)与 ulimit -u(用户进程/线程数);生产建议在 /etc/security/limits.conf/etc/security/limits.d/*.conf 中永久设置,例如:
        • soft nofile 65536
        • hard nofile 65536
        • soft nproc 16384
        • hard nproc 16384
    • 注意 PAM 会话模块需启用(常见为 /etc/pam.d/login 包含 session required pam_limits.so),否则 limits 不生效。高并发下需同步提升系统级上限(如 /proc/sys/fs/file-max)。
  • 使用 cgroups 做容器化隔离
    • 通过 systemd 为 WebLogic 服务设定 CPUQuota、MemoryLimit、IOWeight 等,避免单实例影响整机稳定性;亦可用 cgexec 将进程绑定到指定 cgroup。
  • 内存与 OOM 策略
    • 适度降低 vm.swappiness(如设为 10)以减少换页;必要时配置 zswap/zram 缓解内存紧张。
    • 调整 oom_score_adj(更负的值更不容易被 OOM Killer 终止),保护关键实例:echo -1000 > /proc//oom_score_adj。

二 JVM与WebLogic内存管理

  • 堆与元空间
    • setDomainEnv.sh 或管理控制台设置 -Xms/-Xmx(初始/最大堆),例如:
      • MEM_ARGS=“-Xms2g -Xmx2g”
    • Java 8+ 使用 Metaspace(替代永久代),可按需设置 -XX:MaxMetaspaceSize;避免过度分配导致本地内存压力。
  • 线程栈与本地内存
    • 线程数上调需同步评估 -Xss(线程栈大小)与 ulimit -u,避免“无法创建线程/Resource temporarily unavailable”。
  • 监控与诊断
    • 使用 jstat、jmap、VisualVM/JConsole 观察堆/类加载/线程;配合 top/htop、vmstat、iostat 定位系统瓶颈。

三 线程池与连接数调优

  • WebLogic 线程池
    • 通过控制台设置服务器的 Self-Tuning Thread Pool(最小/最大线程数),或在 config.xml 节点配置:
      • 1000
      • 1000
    • 亦可在 setDomainEnv.shJAVA_OPTIONS 增加(部分版本有效):
      • -Dweblogic.threadpool.MinPoolSize=1000 -Dweblogic.threadpool.MaxPoolSize=1000
  • 文件描述符与网络
    • 提升 ulimit -n 以支撑高并发连接与日志/网络 I/O;必要时优化 TCP 参数(如 net.core.somaxconn、net.ipv4.ip_local_port_range、net.ipv4.tcp_tw_reuse)以缩短连接回收与排队时延。

四 监控与容量规划

  • 系统与应用双维度监控
    • 系统侧:持续采集 CPU、内存、I/O、网络 指标(如 vmstat、iostat、sar),并设置阈值告警。
    • 应用侧:利用 WebLogic Administration Console / Performance Monitoring 观察 JVM 堆、线程、JDBC 连接池 利用率与慢请求。
  • 可视化与告警
    • 建议引入 Prometheus + Grafana 构建监控大盘与告警规则,结合日志分析定位瓶颈与异常。

五 一键落地清单

  • 资源限制
    • limits.conf 增加:nofile 65536、nproc 16384;确认 PAM 启用;必要时用 systemd/cgroups 限制 CPU/内存。
  • 内核与内存
    • sysctl 设置:vm.swappiness=10;需要时启用 zswap/zram;必要时调整 oom_score_adj
  • JVM
    • setDomainEnv.sh 设置:-Xms2g -Xmx2g;Java 8+ 视情况设置 -XX:MaxMetaspaceSize;结合负载调 -Xss
  • 线程与连接
    • 控制台或 config.xml 调整 Self-Tuning Thread Pool;确保 ulimit -nsomaxconn 等网络参数匹配并发目标。
  • 监控
    • 部署 Prometheus/Grafana,监控 WebLogic 关键指标与系统资源,建立基线并定期压测校准。

0