CentOS环境下WebLogic性能提升方法
调整CentOS内核参数以提升系统资源利用率。关键参数包括:
vm.swappiness(默认60,建议调整为10-20),减少系统使用Swap的倾向;设置vm.dirty_ratio=20、vm.dirty_background_ratio=10,优化脏页刷写策略,避免频繁磁盘I/O。net.core.somaxconn=300-500(连接队列长度)、net.ipv4.tcp_max_syn_backlog=8192(SYN队列长度)、net.ipv4.tcp_tw_reuse=1(复用TIME_WAIT连接)、net.ipv4.tcp_fin_timeout=30(TIME_WAIT超时时间),提升网络并发处理能力。fs.file-max=65535(系统最大文件描述符数)、ulimit -n=65535(单个进程最大文件描述符数),避免文件句柄耗尽。-Xms/-Xmx)设置为物理内存的50%-70%(不超过80%),避免内存不足导致频繁GC。taskset命令将WebLogic进程绑定到特定CPU核,减少上下文切换开销。setDomainEnv.sh(Linux)或commEnv.cmd(Windows)中调整-Xms(初始堆)和-Xmx(最大堆)为相同值(如-Xms2048m -Xmx2048m),避免堆内存动态扩展带来的性能损耗;Java 8及以上版本,设置-XX:MetaspaceSize=256m、-XX:MaxMetaspaceSize=512m(替代永久代)。-XX:+UseG1GC),并通过-XX:MaxGCPauseMillis=200(目标最大GC停顿时间)、-XX:G1HeapRegionSize=4m(Region大小)调整参数,平衡吞吐量与延迟。Servers→配置→线程池,调整weblogic.kernel.Default队列的线程数。建议值为每个CPU核心25-50个线程(如4核CPU设置为100-200),避免线程过少导致请求排队或过多导致CPU竞争。Services→Data Sources→配置→连接池,设置初始容量=最大容量(如50),避免运行时动态扩容的开销;容量增长=1(每次新增1个连接),减少资源浪费。Inactive Connection Timeout=300秒(空闲连接超时回收)、Connection Reserve Timeout=10秒(请求连接的最大等待时间),避免连接泄漏或长时间占用。Test Connections on Reserve(每次从连接池取连接时验证有效性),并设置Test Table Name(如MySQL用SELECT 1、Oracle用SELECT 1 FROM DUAL),确保连接可用性。最大容量(如应用高峰并发100,则设置为100-150),避免连接不足导致请求等待。Capacity Increment=5(每次新增5个连接),平衡连接创建成本与资源利用率。slow_query_log、Oracle的AWR报告)定位慢查询,优化SQL语句(如添加索引、避免SELECT *、减少子查询)。addBatch()/executeBatch()),减少数据库交互次数。net.ipv4.tcp_window_size=65535(TCP窗口大小),提升网络吞吐量;启用net.ipv4.tcp_window_scaling=1(TCP窗口缩放),支持更大的窗口。bbR算法(net.ipv4.tcp_congestion_control=bbr),提升高带宽、高延迟网络的传输效率。worker_processes=CPU核心数、worker_connections=10240(每个worker的最大连接数),提升静态资源处理能力和并发请求转发效率。upstream模块,实现WebLogic集群的负载均衡(如轮询、权重),避免单节点过载。top(CPU/内存使用率)、vmstat(系统整体状态)、iostat(磁盘I/O)、netstat(网络连接)等工具,实时监控系统资源使用情况,定位瓶颈。Monitoring→服务器、线程池、连接池,查看关键指标(如线程池活跃线程数、连接池活动连接数),调整配置。server_name.log(应用日志)、adminserver.out(管理服务器日志),查找错误信息(如连接泄漏、SQL异常),及时修复问题。