一、系统级内核参数优化(基础环境调整)
在CentOS上,需先调整内核参数以提升内存使用效率,减少交换空间依赖和磁盘I/O瓶颈。
vm.swappiness:该参数控制内核使用交换空间的倾向(0-100),值越小越倾向于使用物理内存。建议设置为10(生产环境可更低),减少不必要的交换操作。执行命令:echo 'vm.swappiness = 10' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p。vm.dirty_ratio(脏页占比阈值,触发强制刷写)和vm.dirty_background_ratio(后台刷写阈值)需合理设置。建议dirty_ratio设为10、dirty_background_ratio设为5,平衡内存写入与系统性能。通过sysctl.conf添加对应参数并生效。ulimit -n 65535;永久修改:在/etc/security/limits.conf中添加* soft nofile 65535和* hard nofile 65535。二、JVM内存参数调优(核心优化方向)
JVM内存配置直接影响WebLogic的性能,需根据服务器硬件和应用负载调整:
-Xms(初始堆)和-Xmx(最大堆)参数分配堆内存。建议两者设置为相同值(如2048m-4096m),避免动态扩容带来的性能损耗。堆内存大小一般为服务器物理内存的70%-80%(需预留内存给操作系统和其他进程)。-XX:PermSize(初始永久代)和-XX:MaxPermSize(最大永久代);Java 8及以上改用-XX:MetaspaceSize(初始元空间)和-XX:MaxMetaspaceSize(最大元空间)。建议永久代/元空间设置为堆内存的1/4-1/3(如堆2048m时,永久代设为512m),避免OutOfMemoryError: PermGen space错误。-XX:+UseG1GC),它针对大内存应用设计,能减少停顿时间并提高吞吐量。在setDomainEnv.sh中添加该参数,替代默认的串行/并行回收器。三、WebLogic配置文件修改(具体操作步骤)
WebLogic的内存配置需通过域配置文件实现,主要修改setDomainEnv.sh(Linux环境):
domain目录/bin/setDomainEnv.sh(如/weblogic/user_projects/domains/base_domain/bin/setDomainEnv.sh)。MEM_ARGS变量(或新增),设置堆内存和永久代/元空间参数。示例如下:export MEM_ARGS="-Xms2048m -Xmx2048m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
注意:若使用Java 8以下版本,将MetaspaceSize替换为PermSize,MaxMetaspaceSize替换为MaxPermSize。四、监控与持续优化(保障效果)
优化后需通过工具监控内存使用,及时调整参数:
OutOfMemoryError或垃圾回收警告(如Full GC频繁),根据日志调整内存参数。五、其他优化建议
max-capacity需根据应用并发需求设置(如20-50),避免过多连接占用内存。同时,数据库的最大连接数应大于WebLogic连接池的总和。