WebLogic处理高并发请求时,需增加系统允许的单个进程打开文件数上限。通过ulimit -n查看当前限制(默认通常为1024),修改/etc/security/limits.conf文件(添加* soft nofile 65535、* hard nofile 65535),并修改/etc/pam.d/login文件添加session required pam_limits.so,使设置永久生效。
调整TCP缓冲区大小(net.core.rmem_max、net.core.wmem_max)以提升网络吞吐,例如设置为net.core.rmem_max=16777216、net.core.wmem_max=16777216;优化TCP连接队列长度(net.core.somaxconn)至300-500,避免连接请求堆积;启用TCP快速回收(net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_tw_recycle=1)减少TIME_WAIT状态连接占用。
调整vm.swappiness(默认60,建议设为10-20)降低系统对交换分区(Swap)的依赖,优先使用物理内存;优化脏数据写回策略(vm.dirty_ratio=10、vm.dirty_background_ratio=5),减少磁盘I/O压力。
根据服务器物理内存调整堆内存大小(-Xms初始堆、-Xmx最大堆),建议设置为物理内存的50%-70%且不超过80%(如8GB内存可设为-Xms4g -Xmx6g);统一-Xms与-Xmx值减少垃圾回收(GC)频率;Java 8及以上版本使用元空间(Metaspace)替代永久代,设置-XX:MetaspaceSize=256m、-XX:MaxMetaspaceSize=512m;启用G1垃圾回收器(-XX:+UseG1GC)提升GC效率。
通过WebLogic控制台或setDomainEnv.sh文件调整线程池大小(weblogic.threadpool.MinPoolSize、weblogic.threadpool.MaxPoolSize),建议根据CPU核心数(如8核)设置为MinPoolSize=50、MaxPoolSize=200,避免线程过多导致上下文切换开销或过少导致请求排队。
登录WebLogic控制台→Services→Data Sources→选择数据源→Configuration→Connection Pool,调整参数:
Test Reserved Connections(分配连接时测试有效性)、Test Created Connections(创建连接时测试有效性),设置Inactive Connection Timeout=100(100秒未使用的连接自动回收),取消Remove Infected Connections Enabled(避免频繁重建连接)。通过WebLogic控制台→Deployments→选择应用→Configuration→General,调整:
-1(禁用自动检查),避免频繁重新加载消耗资源;-1(禁用自动检查),减少JSP编译开销;停止并禁用firewalld(systemctl stop firewalld && systemctl disable firewalld)、NetworkManager(systemctl stop NetworkManager && systemctl disable NetworkManager)等服务,释放系统资源。
选择高性能文件系统(如XFS,适合大容量存储和高并发;EXT4,适合通用场景);挂载时添加noatime选项(减少文件访问时间更新),例如mount -o noatime /dev/sda1 /;调整文件系统缓存参数(vm.dirty_ratio、vm.dirty_background_ratio)优化缓存使用。
使用top(查看CPU、内存占用)、vmstat 1(监控系统整体性能)、iostat -x 1(查看磁盘I/O)、jconsole(监控JVM内存、线程)等工具实时监控系统状态;通过WebLogic控制台→Monitoring→Performance查看服务器、线程池、连接池等指标。
使用JMeter、LoadRunner等工具模拟高并发场景,生成性能报告;分析报告中CPU使用率(若持续>80%需优化线程池或JVM)、内存使用率(若频繁GC需调整堆大小)、磁盘I/O等待(若过高需优化存储或查询)、网络延迟(若过高需调整TCP参数)等指标,定位瓶颈并针对性优化。
在WebLogic启动脚本(setDomainEnv.sh)中添加-Dweblogic.NativeIOEnabled=true,提升文件读写性能(适用于高并发I/O场景)。
针对内存需求大的应用,通过sysctl -w vm.nr_hugepages=1024(设置1024个2MB大页)启用大页内存,减少内存碎片和TLB(Translation Lookaside Buffer)缺失,提升内存访问效率。
通过WebLogic集群功能(Environment→Servers→Create创建集群),将应用部署到多个节点,实现负载均衡(提升并发处理能力)和高可用性(节点故障时自动切换)。