优化WebLogic性能需从系统底层、JVM配置、线程/连接管理、数据库交互、缓存策略、监控体系六大维度协同调整,以下是具体措施:
内核参数调优:
修改/etc/sysctl.conf
文件,优化TCP/IP及文件系统参数,提升网络与I/O性能:
net.core.somaxconn=4096
:增加TCP监听队列长度,避免连接请求被拒绝;net.ipv4.tcp_tw_reuse=1
:允许复用TIME_WAIT状态的连接,减少连接建立开销;net.core.rmem_max=16777216
/net.core.wmem_max=16777216
:增大TCP读写缓冲区,提升网络吞吐量;vm.swappiness=10
:降低系统对交换分区(Swap)的依赖,减少磁盘I/O延迟。文件描述符限制:
WebLogic处理高并发时需大量文件描述符,通过以下命令调整:
ulimit -n 10240
;/etc/security/limits.d/90-nproc.conf
,添加* -nofile 10240
,避免“Too many open files”错误。存储与网络优化:
net.core.netdev_max_backlog=2048
)以应对高流量。堆内存配置:
根据服务器物理内存调整堆大小,避免过大(导致GC停顿过长)或过小(频繁GC):
-Xms
(初始堆)与-Xmx
(最大堆)设置为相同值(如-Xms2g -Xmx4g
),减少内存碎片;垃圾回收器选择:
-XX:+UseG1GC
),通过并行与并发处理减少停顿时间;-XX:MaxGCPauseMillis=200
(目标最大GC停顿时间,单位毫秒),平衡吞吐量与延迟。元空间优化(Java 8+):
替代永久代的-XX:MetaspaceSize
(初始大小,如256MB)与-XX:MaxMetaspaceSize
(最大大小,如512MB),避免元空间溢出。
线程池配置:
环境→服务器→线程池
,调整以下参数:
线程数
:CPU密集型任务设为CPU核心数+1
(如4核CPU设为5);I/O密集型任务设为CPU核心数×2
(如4核CPU设为8);最小线程数
:避免频繁创建/销毁线程(如设为10);最大线程数
:根据并发量设置上限(如200),防止线程过多导致内存耗尽;队列长度
:有界队列(如1000)避免无界队列撑爆内存,队列满时触发拒绝策略(如CallerRunsPolicy
,让调用者线程执行任务,避免丢弃请求)。数据库连接池优化:
服务→数据源
,调整以下参数:
初始容量
:设为最小容量
(如10),减少启动时连接创建开销;最大容量
:根据数据库承受能力设置(如50),避免连接泄漏;连接超时
:非活动连接超时
(如30秒)、登录延迟
(如5秒),及时释放闲置连接。SQL与缓存优化:
SELECT *
),减少数据库查询时间;-XX:+UseQueryCache
),缓存常用SQL结果,降低数据库访问频率。连接池高级参数:
连接重试次数
(如3次)、测试频率
(如每30分钟测试连接有效性),确保连接可用性。WebLogic内置缓存:
-Dweblogic.servlet.cache.enable=true
),缓存静态页面(如HTML、CSS),减少服务器处理负担;外部缓存:
监控工具使用:
监控→性能
查看线程池(活动线程数、队列长度)、内存(堆使用率、GC频率)、连接池(活跃连接数)等指标;jstat
(监控GC)、jstack
(分析线程阻塞)、vmstat
(查看系统整体性能)。日志管理:
环境→服务器→日志记录→HTTP
,取消“启用HTTP访问日志文件”),减少磁盘IO;DEBUG
改为INFO
),避免过多日志输出影响性能。-Dweblogic.security.SSL.enableJSSE=true
),减少加密解密开销;以上优化措施需根据实际应用场景(如CPU密集型/IO密集型、高并发/低并发)调整,务必在测试环境验证后再应用于生产环境,避免因配置不当导致系统不稳定。