Linux 上 WebLogic 资源限制管理
一 操作系统层限制
文件句柄与进程数
# /etc/security/limits.conf
weblogic soft nofile 65536
weblogic hard nofile 65536
weblogic soft nproc 16384
weblogic hard nproc 16384
在 /etc/pam.d/login 或发行版对应的登录配置中加入:session required pam_limits.so
临时生效可用:ulimit -n 65536、ulimit -u 16384。同时可查看系统级上限:cat /proc/sys/fs/file-max。以上设置直接影响 WebLogic 及底层网络/文件 I/O 能力。虚拟内存与栈
ulimit -v 限制进程可用虚拟内存,防止异常内存分配;通过 ulimit -s 调整线程栈大小(降低栈可提升可创建线程数,但过小可能导致栈溢出)。示例:ulimit -v 536870912(约 512MB)、ulimit -s 1024(单位 KB)。这些限制需在 WebLogic 启动前设置,或通过启动脚本统一导出。使用 cgroups 做容器化限额(可选)
二 JVM 层内存与线程栈
JAVA_OPTIONS 设置堆大小,例如:-Xms2g -Xmx2g。Java 8+ 使用 Metaspace 替代永久代,通常无需显式设置 -XX:MaxPermSize;如未设置,元空间会按需增长,建议结合监控合理规划容器/系统内存。-Xss 控制,默认值依 JDK/平台而异。提升 WebLogic 线程数时,若遇到无法创建线程或内存不足,可适当降低 -Xss 以释放 native 内存压力(需充分压测验证,避免栈溢出)。-Xss 过大有关。处置思路:放宽系统限制(nofile/nproc/virtual memory)、降低 -Xmx、减少线程数或减小 -Xss,必要时改用 64 位 JDK/OS。三 WebLogic 层线程池与容器配置
-Dweblogic.threadpool.MinPoolSize=1000 -Dweblogic.threadpool.MaxPoolSize=1000),或在 config.xml 的 <server> 元素中配置 <self-tuning-thread-pool-size-min> 与 <self-tuning-thread-pool-size-max>。线程数上限受操作系统资源(尤其 nproc/nofile/virtual memory)与 -Xss 共同约束,需联调确定。LogLimit(单日志文件大小)、LogCount(保留文件数)、CrashRecoveryEnabled(崩溃后自动拉起)、StartScriptEnabled(通过启动脚本启停受管服务器)。合理设置有助于在资源受限场景下稳定运行与快速恢复。四 网络与系统内核参数
fs.file-max、nofile),扩大本地端口范围(net.ipv4.ip_local_port_range),以支持高并发连接与大量后端长连接场景。net.core.rmem_default/wmem_default、net.core.rmem_max/wmem_max、net.ipv4.tcp_rmem/tcp_wmem、net.core.netdev_max_backlog、net.core.somaxconn,改善突发流量与长肥管道(LFN)下的吞吐与稳定性。net.ipv4.tcp_keepalive_time=1800),适度降低 net.ipv4.tcp_fin_timeout 以加速 TIME_WAIT 回收(需权衡延迟与端口复用风险)。修改后通过 sysctl -p 使配置生效。五 快速检查与落地步骤
ulimit -a,确认 nofile/nproc/virtual memory/stack 已达预期;必要时在启动脚本最前导出所需 ulimit 值。top/htop 观察 CPU/内存与负载;vmstat/iostat/sar 诊断瓶颈;结合 WebLogic 控制台与性能监控工具观察线程池、连接池与 GC 行为,联动调整。-Xss → 配置 WebLogic 线程池与数据源 → 压测验证与滚动发布。生产环境务必充分压测,避免过度限制导致实例无法启动或性能劣化。