CentOS上WebLogic内存调优实践
JVM内存配置是WebLogic性能的基础,需根据应用负载和服务器硬件(尤其是物理内存)合理设置,避免内存溢出或频繁GC。
-Xms(初始堆大小)和-Xmx(最大堆大小)参数调整。建议两者设置为相同值(如-Xms4g -Xmx4g),避免JVM动态扩展堆时产生的停顿。设置范围需控制在物理内存的60%~80%(64位系统),避免占用过多内存导致系统或其他进程无法运行。-XX:PermSize(初始永久代大小)和-XX:MaxPermSize(最大永久代大小)调整(如-XX:PermSize=512m -XX:MaxPermSize=512m);Java 8及以上版本改用元空间(Metaspace),无需手动设置(默认无上限,但可通过-XX:MaxMetaspaceSize限制,如-XX:MaxMetaspaceSize=512m)。-XX:NewRatio调整(如-XX:NewRatio=3表示新生代与老年代比例为1:3)。若应用存在大量短期对象(如Web应用),可适当增大新生代比例(如-XX:NewRatio=2),减少老年代GC频率。-XX:SurvivorRatio调整(如-XX:SurvivorRatio=8表示Eden区与每个Survivor区的比例为8:1)。若应用存在大量短期对象,可增大该比例(如-XX:SurvivorRatio=10),减少对象过早进入老年代。-XX:+UseG1GC),适用于大内存多处理器服务器,能有效减少GC停顿时间。需配合-XX:MaxGCPauseMillis设置目标最大停顿时间(如-XX:MaxGCPauseMillis=200,单位毫秒)。操作系统参数直接影响WebLogic的内存使用效率,需调整内核参数以提升性能。
ulimit -n 65535;永久修改:编辑/etc/security/limits.conf,添加* soft nofile 65535和* hard nofile 65535(*表示所有用户)。vm.swappiness控制内核使用交换空间的倾向(0~100),值越小越倾向于使用物理内存。建议设置为10(echo 'vm.swappiness = 10' | sudo tee -a /etc/sysctl.conf),减少交换带来的性能损耗。/etc/sysctl.conf中的参数,提升网络性能:
net.ipv4.tcp_tw_reuse = 1:允许重用TIME_WAIT状态的连接,减少连接建立时间;net.ipv4.tcp_fin_timeout = 30:设置TIME_WAIT状态的超时时间为30秒(默认60秒);net.core.somaxconn = 1024:增加监听队列的最大长度,避免连接拒绝。通过修改WebLogic启动脚本和配置文件,将内存参数应用到实际运行环境中。
setDomainEnv.sh(Linux)文件,添加或修改MEM_ARGS变量(如MEM_ARGS="-Xms4g -Xmx4g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"),确保启动时加载正确的内存参数。-Xms4g -Xmx4g),保存后重启服务器生效。内存调优需结合监控数据不断调整,避免过度分配或不足。
-Xmx;若Young GC频繁,可增大新生代比例;若存在内存泄漏,需检查应用代码(如未关闭的数据库连接、缓存未清理)。