WebLogic Server 关键优化指标

昨天给客户做巡检,又将整个WebLogic Server的优化过程走了一遍,记录下来给大家参考。1.JVM优化查看

$ps –ef | grep java

/opt/java1.5/bin/java -server -Xms256m -Xmx512m -XX:PermSize=16M

-XX:NewSize=128m -XX:MaxPermSize=256m …

 参数设置原则
  • 保持简单性
  • 提供基本参数(-X 参数)-Xms、-Xmx、-Xmn
  • 选择一个 GC/性能优先级,权衡吞吐量与暂停时间
  • 其余参数大多使用默认值,(让人体工程机制计算正确值,仅当默认值无效时调优)
  •  
    • 年轻代的大小将决定
      • 次要 GC 的频率
      • 次要 GC 收回的对象数量
    • 年老代大小
      • 应达到应用程序稳定状态的 实时数据大小
      • 尝试最大限度减小主要 GC 的频率
    • JVM 内存占用不应超过物理内存
      • 最大达到 RAM 的 80-90%(为操作系统留出空间)
    • 经验法则:应尽量增加年轻代收回的对象。尽量增加完整 GC 频繁
     
     
    • Set –Xmx = –Xms
      • 防止堆大小 (Full GC) 从 Xms 增大到 Xmx
      • 性能更优
      • 并非总是生产可用性的最佳选择(OOME 更合适使用内存交换)
    • 持久代大小
      • -XX:PermSize = -XX:MaxPermSize
      • 持久代占用空间大小难以预测
      • 设置足够高以防止 PermGen OOME
    • 将 -XX:NewSize 设置为 -XX:MaxNewSize
      • 优先使用 –Xmn
     
    设置一般来说在64位系统中开到4G-8G,如果有多租户的规划,可以开到更大,修改setDomainEnv.sh也可以根据受管Server的名字设置不同的JVM,具体设置在USER_MEM_ARGS参数前

    ############# change jvm #########################

    if [ "${SERVER_NAME}" = "" ] ; then

            SERVER_NAME="AdminServer"

            export SERVER_NAME

    fi

    if [ "${SERVER_NAME}" = "AdminServer" ] ; then

      USER_MEM_ARGS="-Xms512m -Xmx1024m -XX:MaxPermSize=512m"

    else

      USER_MEM_ARGS="-Xms4g -Xmx4g -XX:MaxPermSize=1024m"

    fi

     

    ############# e n d #########################

     JVM GC文件输出设置如果需要分析JVM GC日志,需要在启动时加入参数

    Sun:-verbose:gc -XX:+PrintGCDetails -Xloggc:<filename>

    IBM:-Xverbosegc:file=filename 或 -Xverbosegclog:filename

    HP :-Xverbosegc=filename

    Oracle JRockit:-Xverbose:memory -XverboseLog:filename

     随后可以通过GCViewer进行脱机的日志查看。   2.关于线程WebLogic Server在9以后引入了work manager机制,因此weblogic会自动对线程的数目进行优化,开发模式下初始线程数为15,生产模式下初始线程数为25目前WebLogic Server采用自优化的策略来进行线程的自动扩展,一般状况下不需要对线程进行专门的优化,如果在压力测试环境中有必要,可以设置最小线程数和最多线程数,具体设置方法如下:修改weblogicuser_projectsdomainsbase_domainbin下的setDomainEnv.sh中在JAVA_OPTIONS中添加如下:

    JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=1000"

     

    export JAVA_OPTIONS

      一般线程数建议设置成100-500之间,线程太多容易引起进程内部的线程切换. 3.Accept BackLogWebLogic 使用Accept Backlog (TCP queue)参数规定WebLogic向系统请求的queue的大小, Accept Backlog属性決定了在 waiting queue(listening queue)中最多可以有多少TCP连接等待处理,預设值爲300如果在許多client连接被拒絕,而在服务器端沒有错误显示,说明该值设得过低如果连接时收到了”connection refused”消息,可以适当增大weblogic.system.acceptBacklog的值,每次增加25% ,配置如下:服务器->配置->优化->接受积压: 4.Muxer优化Muxer定位:在前端接入请求,然后转交执行队列WebLogic Server采用3种Muxer机制
  • Java Muxer
  • Native Muxer
  • Non-Blocking IO Muxer
  • 始终验证 WebLogic 正在使用 NativeIO。以下消息指示其正在使用中
    <Aug 7, 2012 8:32:10 AM CDT> <Info> <Socket> <BEA-000446> <Native IO Enabled.>
    从 32 位 JVM 切换至 64 位 JVM 时需格外注意。32 位 WebLogic Server 下载文件不含套接字合成器所需的 64 位本地库。

    如果无法使用NativeIO(或者不沟取),Java Muxer设置缺省33%,最高50%,这都是指的占用线程的比例关系,
    也可以设置合成器线程数量限制:  -Dweblogic.SocketReaders=4 传统方式下只有一个Muxer,Non-Blocking IO Muxer是在Exalogic上采用,缺省会启动3个Muxer.  5.JDBC优化 创建 DB 连接是一个非常耗时的过程
  • 理想情况下,设置为最小值 = 最大值,以避免按需创建连接
  • 如果 DB 连接数受限,请将最小值设置为处理普通负载所需的连接数,将最大值设置为处理峰值负载所需的连接数,并启用池收缩
  • 在控制台中监视数据源统计数据
  • Active Connections High Count
  • Waiting on Connection High Count
  • Wait Seconds High Count
  • 缓存主要设置语句的条数,缺省为10,建议调大,设置成300 Connection Creation Retry Seconds(默认值 = 0)
  • 如果某数据源的数据库不可用,那么此选项设置为默认值 0 时 WLS 将无法启动!
  • 设置为非零值可让服务器顺利启动并定期重试创建连接池
  • Seconds to Trust Idle Pool Connection(默认值 = 10 秒)
  • 与 Test Connections On Reserve 共同发挥作用
  • 可显著减少连接测试查询
  • 请考虑 LLR for JTA 事务
  • 仅有利于涉及多种资源的 XA 事务
  • Last Logging Resource(非 XA)必须是数据库
  •  

    相关内容推荐