JVM内存配置是WebLogic性能的基础,不合理的内存分配会导致频繁GC、内存溢出等问题。
setDomainEnv.sh(Linux)或startWebLogic.cmd(Windows)文件修改-Xms(初始堆)和-Xmx(最大堆)参数,建议设置为物理内存的50%-60%(如8G内存可设为-Xms4096m -Xmx4096m),且初始堆与最大堆一致,避免频繁扩容带来的性能损耗。-XX:PermSize(初始永久代)和-XX:MaxPermSize(最大永久代),建议设为512m;Java 8及以上改用元空间,无需手动设置(默认无限制,但可通过-XX:MaxMetaspaceSize限制)。-XX:+UseG1GC),适用于大内存、低延迟场景,能有效减少Full GC次数;避免使用Serial GC(单线程,适合小内存)。操作系统参数直接影响WebLogic的资源利用率,需针对CentOS的特性调整。
/etc/security/limits.conf文件,添加* soft nofile 65535和* hard nofile 65535(临时生效用ulimit -n 65535),避免“Too many open files”错误。/etc/sysctl.conf文件,设置net.ipv4.tcp_tw_reuse=1(复用TIME_WAIT连接)、net.ipv4.tcp_fin_timeout=30(TIME_WAIT超时30秒)、net.core.somaxconn=1024(增加TCP连接队列长度),执行sysctl -p使配置生效,提升网络连接处理能力。vm.swappiness=10(默认60),降低系统对Swap的依赖,优先使用物理内存,减少I/O瓶颈。线程池是处理请求的核心,线程数不足会导致请求排队,过多则会增加CPU上下文切换开销。
Environment→Servers→[Server Name]→Configuration→Tuning)修改MinPoolSize(最小线程数)和MaxPoolSize(最大线程数)。建议设置为CPU核心数×50(如4核CPU设为200),兼顾并发处理能力和资源消耗。StuckThreadMaxTime(默认600秒)为1200秒,避免因个别请求阻塞导致线程池耗尽。数据库连接池是应用与数据库交互的关键,配置不当会导致连接等待、数据库过载。
Services→Data Sources→[Data Source Name]→Configuration→Connection Pool)设置Initial Capacity(初始连接数)和Max Capacity(最大连接数),建议两者相等且≥执行线程数(如线程池设为200,连接池设为200),避免运行时动态创建连接的开销。Inactive Connection Timeout=100(非活动连接100秒后回收)、Test Reserved Connections=true(应用获取连接时测试有效性),取消Remove Infected Connections Enabled(避免频繁检查连接有效性),提升连接复用率。systemctl stop命令关闭不用的系统服务(如cups打印服务、avahi-daemon网络发现服务),释放系统资源。noatime挂载选项(修改/etc/fstab文件,如/dev/sda1 / ext4 defaults,noatime 0 0),减少文件访问时间的记录,提升磁盘I/O性能。permissive模式(setenforce 0)或修改/etc/selinux/config文件,避免SELinux对WebLogic的限制。启用本地IO可提升套接字处理效率,减少Java层与Native层的交互开销。
Environment→Servers→[Server Name]→Configuration→Tuning)勾选“Enable Native IO”,允许WebLogic使用本地Socket读的多线程,提升高并发下的IO处理能力。性能调优是持续过程,需通过监控工具定位瓶颈。
以上优化策略需根据WebLogic版本、应用特性(如并发量、数据库访问频率)和CentOS环境(如CPU核心数、内存大小)进行调整,建议先在测试环境验证效果,再应用到生产环境。