zoukankan      html  css  js  c++  java
  • 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_projectsdomainsase_domainin下的setDomainEnv.sh中在JAVA_OPTIONS中添加如下:

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

     

    export JAVA_OPTIONS

      

    一般线程数建议设置成100-500之间,线程太多容易引起进程内部的线程切换.

    3.Accept BackLog

    WebLogic 使用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)必须是数据库
     
  • 相关阅读:
    WeX5 苹果APP打包教程
    开源中国社区
    HBuilder-飞速编码的极客工具,手指爽,眼睛爽下载
    java用double和float进行小数计算精度不准确
    SQL Server 查询表的主键的两种方式
    JS代码压缩格式化在线地址
    解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法
    SQL跨数据库复制表数据
    ExtJs 扩展类CheckColumn的使用(事件触发)
    DM36x IPNC OSD显示中文 --- 基本数据准备篇
  • 原文地址:https://www.cnblogs.com/ericnie/p/5233666.html
Copyright © 2011-2022 走看看