Debian系统WebLogic性能调优技巧
通过修改/etc/sysctl.conf文件优化内核参数,提升网络与内存性能。关键参数包括:
fs.file-max = 655360;net.core.rmem_max = 16777216、net.core.wmem_max = 16777216;net.core.somaxconn = 8192;vm.swappiness = 10(值越低,越倾向于使用物理内存)。sysctl -p使配置生效。noatime挂载选项减少不必要的磁盘写入;通过ulimit命令调整用户进程的最大文件描述符数(默认值通常较小),避免高并发时出现“Too many open files”错误。编辑/etc/security/limits.conf,添加:
weblogic soft nofile 65536、weblogic hard nofile 65536(weblogic为运行WebLogic的用户)。
iostat -x 1命令监控磁盘IO负载,重点关注%util(磁盘利用率)与await(平均等待时间);/etc/fstab中添加noatime,nodiratime);设置初始堆内存(-Xms)与最大堆内存(-Xmx)为相同值(如-Xms8g -Xmx8g),避免运行时动态扩展导致的性能波动;根据服务器内存大小调整(建议不超过物理内存的70%,预留空间给系统与其他进程)。
-XX:+UseG1GC启用;设置最大GC停顿时间(如-XX:MaxGCPauseMillis=200)与触发并发GC的堆占用率(如-XX:InitiatingHeapOccupancyPercent=45),平衡吞吐量与延迟;-XX:+UseConcMarkSweepGC启用,但需注意其在JDK 14及以上版本已移除。调整元空间大小(替代JDK 8以前的永久代),避免元空间溢出(OutOfMemoryError: Metaspace)。设置初始元空间大小(-XX:MetaspaceSize)与最大元空间大小(-XX:MaxMetaspaceSize)为相同值(如-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g)。
启用分层编译(-XX:+TieredCompilation),提升热点代码的编译效率;调整编译阈值(-XX:CompileThreshold=1500),减少编译次数。
通过config.xml文件调整线程池大小(位于/weblogic/user_projects/domains/base_domain/config目录下),满足应用并发需求。关键参数:
maxThreads:最大线程数(如200,根据CPU核心数调整,建议为CPU核心数×2+1);minThreads:最小线程数(如10,避免线程频繁创建/销毁);queueCapacity:队列容量(如100,超过容量的请求将被拒绝,防止系统过载)。通过config.xml文件配置数据库连接池,减少数据库连接创建的开销。关键参数:
initialCapacity:初始连接数(如10,应用启动时创建的连接数);maxCapacity:最大连接数(如50,根据数据库负载调整);testTableName:连接有效性检查表(如SELECT 1 FROM DUAL,确保连接可用)。通过WebLogic控制台配置集群,提升可用性与扩展性。关键步骤:
降低不必要的日志输出(如DEBUG级别),减少磁盘IO。通过WebLogic控制台进入“日志配置”,将日志级别调整为INFO或WARNING;避免开启“详细日志”(如SQL日志),仅在排查问题时临时开启。
通过WebLogic Administration Console的“监控”模块,实时查看服务器的CPU、内存、线程池、JDBC连接池等指标;启用JMX(Java Management Extensions),远程监控WebLogic的性能指标。
使用Prometheus+Grafana组合,收集WebLogic的JVM、线程、数据库等指标,生成可视化 dashboard;或使用New Relic、AppDynamics等APM工具,深入分析应用性能瓶颈。
定期分析WebLogic日志(如server.log)与GC日志(如/path/to/gc.log),识别频繁出现的错误(如连接超时、内存溢出);使用ELK(Elasticsearch+Logstash+Kibana)堆栈,集中管理与分析日志。