WebLogic在Ubuntu上的性能调优需结合系统级配置、WebLogic自身参数调整及应用层优化,以下是具体技巧:
内核参数优化
sudo sysctl -w vm.swappiness=10(临时生效),并将vm.swappiness=10添加至/etc/sysctl.conf(永久生效)。net.core.somaxconn,建议设为1024)和TCP连接复用(net.ipv4.tcp_tw_reuse,设为1),提升网络吞吐量。ulimit -n 65535临时增加单个进程的最大文件描述符数,修改/etc/security/limits.d/90-nproc.conf(如* -nofile 65535)永久生效,避免“Too many open files”错误。文件系统与I/O优化
noatime,nodiratime选项(减少文件访问时间更新的开销)。noop(无队列调度,减少调度开销),机械硬盘使用deadline(低延迟,避免I/O饥饿)。系统资源监控
top、htop(实时查看CPU、内存占用)、vmstat(监控系统整体性能,如上下文切换次数)、iotop(监控磁盘I/O)等工具,定期分析资源瓶颈。JVM内存设置
-Xms4g -Xmx4g,初始堆等于最大堆以减少内存碎片);Java 8及以上版本需设置元空间(-XX:MaxMetaspaceSize=512m,替代原-XX:MaxPermSize)。线程池优化
weblogic.kernel.Default执行队列(处理所有请求的默认队列)的ThreadCount参数需根据CPU核心数调整——一般设置为CPU核心数的1~2倍(如4核CPU设为4~8),避免线程过多导致上下文切换开销。config.xml中添加<self-tuning-thread-pool-size-min>和<self-tuning-thread-pool-size-max>(如<self-tuning-thread-pool-size-min>5</self-tuning-thread-pool-size-min>、<self-tuning-thread-pool-size-max>200</self-tuning-thread-pool-size-max>),或在启动脚本中添加-Dweblogic.threadpool.MinPoolSize=5 -Dweblogic.threadpool.MaxPoolSize=200。数据库连接池优化
InitialCapacity(初始连接数,如5~10)、MaxCapacity(最大连接数,如50~200)和StatementCacheSize(语句缓存大小,如10~50),避免频繁创建/销毁连接。TestConnectionsOnReserve(借用连接时测试有效性)和RemoveInfectedConnections(移除泄漏连接),防止连接泄漏导致资源耗尽。HTTP与压缩优化
ExecuteThreadTotalCPUUsage(线程CPU使用率阈值,如75%)和ExecuteThreadTotalCPUUsageDecay(衰减因子,如0.95),优化HTTP请求处理。Compress HTML、Compress CSS、Compress JS等选项,减少网络传输数据量(尤其适合文本类响应)。Stuck Thread处理
StuckThreadMaxTime(堵塞线程最大时间,默认600秒)设置为1200秒(或更长),避免因长时间运行的业务逻辑(如大数据量查询)误判为堵塞;同时设置StuckThreadTimerInterval(检测间隔,默认60秒)为30秒,及时发现堵塞线程。代码优化
String str = new String("abc")改为String str = "abc"),使用对象池(如数据库连接池、线程池)复用对象。SELECT *(只查询需要的字段)、使用批量操作(如BatchInsert)减少数据库交互次数。缓存策略
StatementCacheSize(如设为50),缓存常用SQL语句的执行计划,提升查询效率。日志管理
System.out.println(使用Log4j/SLF4J的DEBUG级别仅在调试时开启),减少磁盘I/O开销。以上技巧需根据实际业务场景(如并发量、数据量、应用类型)调整,建议在测试环境验证后再应用于生产环境。