温馨提示×

weblogic在ubuntu上运行慢怎么解决

小樊
48
2025-11-23 01:27:44
栏目: 智能运维

Ubuntu上WebLogic运行慢的排查与优化清单

一 快速定位瓶颈

  • 资源与负载:用top/htop观察CPU、内存、负载;用vmstat、iostat、sar持续监测系统层瓶颈;必要时用cgroups限制/隔离WebLogic资源,避免影响其他业务。
  • 磁盘与I/O:用iotop定位高I/O进程,检查**/var/log、域目录、数据库日志是否频繁刷盘;结合业务选择合适的ext4/xfs/btrfs**并关注I/O等待。
  • JVM与GC:开启GC日志,观察Full GC频率与停顿;确认堆大小是否合理、是否存在内存泄漏。
  • WebLogic内部:在Administration Console查看线程池、JDBC连接池、Servlet/JSP等运行时指标,识别线程饥饿、连接不足、阻塞等。
  • 网络:检查TCP重传、连接时延,确认是否受网络抖动影响。
    以上做法可快速判断是系统资源、I/O、JVM还是应用/配置导致的慢。

二 高概率原因与对应修复

  • 启动或创建域阶段卡住(熵池不足导致随机数阻塞):
    修改WebLogic使用的JDK安全配置,将**$JAVA_HOME/jre/lib/security/java.security中的
    securerandom.source=file:/dev/urandom 改为
    securerandom.source=file:/dev/./urandom;或在
    setDomainEnv.sh**中添加
    JAVA_OPTIONS=“${JAVA_OPTIONS} -Djava.security.egd=file:/dev/./urandom” 并导出。此法可显著缩短启动/建域时间。
  • 运行期线程不足或过载:
    在控制台调优执行队列线程数(WebLogic 12c之后以Work Managers为主,思路一致),经验上以CPU核心数 × 50为上限进行压测寻优,避免线程过多导致上下文切换开销。
  • JDBC连接池瓶颈:
    将连接池的初始容量=最大容量,并把最大容量设置为至少与线程数相当,减少运行时扩容与等待。
  • 文件描述符与进程数限制:
    编辑**/etc/security/limits.conf**,为运行WebLogic的用户设置如:
    soft/hard nofile 65535;soft/hard nproc 65535,防止“Too many open files”。
  • 网络半连接队列过小:
    config.xml的Server配置中提升Accept Backlog(默认约50),可按负载逐步上调(如每次**+25%**)以减少连接拒绝。
  • 未启用本地I/O性能包:
    在控制台“服务器 > 配置 > 调整”启用Native I/O(NativeIOEnabled=true),可降低网络栈开销、提升吞吐。
  • 内存配置不当:
    setDomainEnv.sh中设置**-Xms-Xmx相等(如各4G**),一般建议堆不超过物理内存的50%~60%,避免频繁GC或OOM。

三 关键配置示例

  • setDomainEnv.sh(JVM与熵源)
    # 堆大小:建议Xms=Xmx,且不超过物理内存的50%~60%
    WLS_MEM_ARGS_64BIT="-Xms4g -Xmx4g"
    export WLS_MEM_ARGS_64BIT
    
    # 加速启动/建域阶段的熵源初始化
    JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.security.egd=file:/dev/./urandom"
    export JAVA_OPTIONS
    
  • limits.conf(放宽句柄与进程数)
    * soft nofile 65535
    * hard nofile 65535
    * soft nproc  65535
    * hard nproc  65535
    
  • config.xml(网络与I/O)
    <Server>
      ...
      <AcceptBacklog>100</AcceptBacklog>
      <NativeIOEnabled>true</NativeIOEnabled>
    </Server>
    
  • JDBC连接池(示例原则)
    • 初始容量=最大容量(减少运行时扩容)
    • 最大容量 ≥ 执行队列/工作线程数(避免线程等待连接)

四 验证与持续监控

  • 基线对比:在调整前后记录相同场景下的RT、TPS、95/99分位延迟、Full GC次数/停顿、CPU/IO等待,以数据评估优化成效。
  • 运行期观测:在控制台持续关注线程池使用率、队列等待、JDBC活跃/等待连接、Servlet/JSP编译与缓存命中等指标,结合业务高峰做滚动调优。
  • 系统层监控:使用Prometheus + Grafana构建可视化监控,覆盖CPU、内存、I/O、网络、JVM等关键维度,设置阈值告警,形成持续优化闭环。

0