- 首页 >
- 问答 >
-
智能运维 >
- ubuntu上weblogic资源限制如何设置
ubuntu上weblogic资源限制如何设置
小樊
38
2025-11-28 23:48:40
Ubuntu上WebLogic资源限制设置指南
一 操作系统层限制
- 文件句柄与进程数
- 编辑限制:在**/etc/security/limits.conf为运行WebLogic的用户(如weblogic**)设置软硬限制,示例将软硬限制统一为65535;同时确认**/etc/pam.d/common-session**(或发行版对应的PAM会话文件)包含“session required pam_limits.so”,以确保登录会话应用限制。
- 临时生效:使用命令如ulimit -n 65535(打开文件数)与ulimit -u 65535(用户进程/线程数),仅对当前会话有效。
- 系统级上限:检查cat /proc/sys/fs/file-max,必要时在**/etc/sysctl.conf中调大并运行sysctl -p**使配置生效。
- TCP连接与端口
- 扩大本地端口范围与可用连接跟踪数,在**/etc/sysctl.conf**中设置如:
- net.ipv4.ip_local_port_range = 1024 65535
- net.ipv4.ip_conntrack_max = 1048576
- 执行sysctl -p使内核参数生效。
二 JVM层资源限制与调优
- 堆与元空间
- 建议生产环境将**-Xms与-Xmx设为相同,避免运行期扩缩堆带来的抖动;堆占用一般不超过物理内存的50%~70%**,为操作系统和其他进程预留资源。
- Java 8及以下使用**-XX:PermSize / -XX:MaxPermSize**;Java 8及以上使用**-XX:MetaspaceSize / -XX:MaxMetaspaceSize**(建议设置上限,防止泄漏)。
- 垃圾回收器选择
- 吞吐量优先:-XX:+UseParallelGC -XX:+UseParallelOldGC
- 低延迟优先(Web常用):-XX:+UseG1GC -XX:MaxGCPauseMillis=200
- Java 11+超低暂停:-XX:+UseZGC 或 -XX:+UseShenandoahGC
- 诊断与稳定性
- 开启堆转储与GC日志:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path、-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/gc_%t.log
- 避免显式GC干扰:-XX:+DisableExplicitGC
- 配置方式
- 在域目录的**$DOMAIN_HOME/bin/setDomainEnv.sh中设置USER_MEM_ARGS**或直接在脚本中追加JVM参数;也可在控制台“环境 → 服务器 → 目标服务器 → 配置 → 服务器启动 → 参数”中追加JVM参数。
三 WebLogic内部资源限制
- 执行线程池
- 通过JVM参数:在setDomainEnv.sh的JAVA_OPTIONS中加入
- -Dweblogic.threadpool.MinPoolSize=500
- -Dweblogic.threadpool.MaxPoolSize=3000
- 通过配置文件:在config.xml对应节点设置
- 接受队列与网络
- 在控制台“服务器 → 配置 → 优化”调大Accept Backlog(默认50),缓解高并发下的连接排队与拒绝;必要时结合内核net.ipv4.ip_local_port_range与ip_conntrack_max同步放大。
- 数据源连接池
- 生产环境建议将InitialCapacity设为与MaxCapacity一致,减少运行期扩容带来的连接风暴与延迟波动。
四 容器与cgroups精细化控制(可选)
- 使用cgroups对WebLogic进程组设置CPU份额/配额、内存上限与OOM策略,避免单一实例无限制扩张影响其他业务。
- 结合systemd服务单元,在[Service]段使用LimitNOFILE=、LimitNPROC=、MemoryLimit=等指令为服务进程施加上限,并与脚本中的JVM参数协同设计(例如内存上限应略大于-Xmx并预留本地内存)。
五 验证与常见排错
- 生效验证
- 登录WebLogic控制台查看“服务器 → 监视 → 性能/线程”等指标;使用jstat -gc 观察GC与堆使用;在系统侧用ulimit -a、cat /proc//limits核对进程实际限制。
- 典型问题与对策
- 启动时报“Resource temporarily unavailable in tsStartJavaThread”或无法创建更多线程:提升ulimit -u(用户进程/线程数)与nofile,并适当降低**-Xmx或线程数**、减小**-Xss**,必要时改用64位JDK与64位OS。
- 首次进入控制台很慢:在**$JAVA_HOME/jre/lib/security/java.security将securerandom.source改为file:/dev/./urandom**以加速熵源初始化。