Ubuntu环境下WebLogic资源分配与管理指南
在Ubuntu系统中,需先通过系统工具实现对整体资源的监控与限制,避免WebLogic过度占用影响其他服务。
top(按CPU/内存排序)、htop(更直观的交互式监控)命令查看进程资源占用;vmstat 1(每秒刷新系统级CPU、内存、I/O状态)、iostat -x 1(磁盘I/O详情)、sar -u 1(历史负载趋势)等工具持续跟踪系统负载,快速定位瓶颈。cgroups(控制组)限制WebLogic进程的CPU、内存使用。例如,创建内存限制组:sudo cgcreate -g memory:/weblogic_limit,设置内存上限为4GB:echo 4G | sudo tee /sys/fs/cgroup/memory/weblogic_limit/memory.limit_in_bytes,将WebLogic进程加入该组:sudo cgclassify -g memory:weblogic_limit <PID>。sudo sysctl -w vm.swappiness=10(永久生效需写入/etc/sysctl.conf);② 优化网络栈:sudo sysctl -w net.core.somaxconn=4096(增加TCP连接队列长度)、sudo sysctl -w net.ipv4.tcp_tw_reuse=1(复用TIME-WAIT连接)。WebLogic作为Java应用服务器,内存配置直接影响稳定性与吞吐量,需根据应用负载调整JVM堆内存与非堆内存。
-Xms:JVM初始堆内存(如-Xms1024m),建议与-Xmx一致,避免频繁扩容;② -Xmx:JVM最大堆内存(如-Xmx2048m),32位系统不超过1.8G,64位系统建议不超过物理内存的70%;③ -XX:MaxPermSize(Java 8前,永久代内存,如-XX:MaxPermSize=256m)、-XX:MetaspaceSize(Java 8+,元空间内存,如-XX:MetaspaceSize=256m),用于存储类元数据,避免OutOfMemoryError: PermGen space。bin文件夹中:① setDomainEnv.sh(推荐):找到MEM_ARGS变量,修改为MEM_ARGS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=256m"(Java 8+);② commEnv.sh:若setDomainEnv.sh未覆盖,可在此文件中修改对应JDK(Sun/JRockit)的内存参数,确保启动时加载。OutOfMemoryError,需逐步增加-Xmx;若频繁Full GC,可调整新生代比例(-XX:NewRatio=2,新生代占堆的1/3)或启用G1垃圾收集器(-XX:+UseG1GC)。CPU是WebLogic处理请求的核心资源,需合理分配以避免争抢。
Servers > <Server Name> > Configuration > Thread Pools)调整线程池参数:① ExecuteThreadTotalCPUUsage:线程池CPU使用率阈值(默认75%),超过则拒绝新请求;② ExecuteThreadTotal:最大线程数(根据CPU核心数调整,建议2*CPU核心数~4*CPU核心数,如4核CPU设置为8~16)。taskset命令将WebLogic进程绑定到特定CPU核心,减少上下文切换。例如,将进程<PID>绑定到核心0和2:sudo taskset -cp 0,2 <PID>。磁盘I/O瓶颈会导致请求响应变慢,需优化文件系统与存储配置。
ext4(稳定)或xfs(高并发性能好)文件系统,挂载时添加noatime(不更新访问时间)、nodiratime(不更新目录访问时间)选项,减少磁盘写入。iotop命令查看进程磁盘读写情况,定位高I/O进程;若磁盘读写慢,可升级至SSD(随机读写性能远优于HDD),或增加磁盘阵列(RAID 10提升读写速度与冗余)。通过WebLogic内置功能实现对资源使用的精细化管理。
Services > Data Sources > <Data Source>)参数:① Initial Capacity:初始连接数(如5);② Max Capacity:最大连接数(根据数据库性能调整,建议10~50);③ Statement Cache Size:SQL语句缓存(如100),减少重复编译开销。Servers > <Server Name> > Configuration > Monitoring > Enable JMX),通过jconsole、VisualVM等工具实时监控WebLogic内存、线程、连接池等指标,及时发现异常。Environment > Clusters),通过Round Robin或Least Connections算法分发请求,提升整体吞吐量。通过自动化工具构建监控体系,持续跟踪资源使用情况,及时预警并优化。
Prometheus(采集系统与WebLogic指标)+Grafana(可视化展示)构建监控面板,监控CPU、内存、磁盘I/O、线程池、连接池等指标;设置告警规则(如内存使用率超过80%、线程池队列长度超过100),通过邮件或短信通知管理员。JMeter、Gatling等工具定期进行压力测试,模拟高并发场景,验证资源配置是否合理;根据测试结果调整内存、线程池、连接池等参数,实现资源的最优分配。