诊断 Portal 性能问题


问题描述
WebLogic Portal 8.1 (WLP 8.1) 的性能根据 Service Pack 的不同而变化很大。例如,WLP 8.1.2 的性能比 GA (WLP 8.1.1) 提高约 25-35%。WLP 8.1.3 的性能可望比 8.1.2 提高 10-20%,而 WLP 8.1.4 又可望比 8.1.3 提高 35-45%。WLP 的另一个特点是可调性较高。也就是说,有许多可对性能产生显著影响的配置因素。通常,以下一种或几种故障症状描述了性能问题的表现:
  • 一个或多个被管服务器负载故障。
  • 内存不足异常。
  • 响应时间增加。
  • 随机异常,奇怪的 ClassCastExceptions、ClassNotFoundExceptions、NullPointerExceptions、ContentNotFoundException 错误等。例如,在系统持续正常工作过程中出现 ClassCastException;或者,即使系统以前显示过相关内容,也会出现 ContentNotFoundException。

  • 故障排除
    请注意,并非下面所有项目都需要完成。有些问题仅通过执行几项任务就可以解决。

    快速链接:
    为什么发生此问题?
    所有 Service Pack-需立即完成的工作
    所有 Service Pack-深入分析
    需要更多帮助?

    为什么发生此问题?
    WLP 8.1 SP2-此 SP 中的性能问题主要是由于与会话大小相关的设计问题而引起的。几乎所有情况下,根本原因都是运行缓慢或内存不足。
    WLP 8.1 SP3,4-WLS Portal 是可配置性极高的写缓存。但是,由于缓存使用内存,所以 JVM 调优是一个必要的前提条件。在几乎所有与性能相关的案例中,都没有执行所有 Service Pack-需立即完成的工作下列出的四条建议。

    返回页首
     
    所有 Service Pack-需立即完成的工作
    如果在生产系统中出现严重的性能问题,则应立即对某些方面进行检查,然后再进行进一步的诊断:

    1. 请确保将 JVM 设为以下最小设置:
    BEA Jrockit 1.4.2_06:-Xms1024m -Xmx1024m -Xgc:parallel Sun JDK 1.4.2_06:-Xms1024m -Xmx1024m -XXMaxPermSize=128m -XXNewRatio=2

    备注 1:如果将设置进行如下改变,将会非常有用:将 MaxPermSize 设置为总堆 (heap) 大小的大约 25%。配合 Portal 使用,可以使效果更佳。
    备注 2:JDK 1.4.1 存在安全漏洞。请参阅位于“支持”站点的“安全警报 (Security Alerts)”。Sun Alert ID:57591 指导原则:最小设置适用于轻到中度负载的系统。对于中到重度负载系统,将最小设置增加一倍。对于重度负载系统,请注意切勿超出 JVM 允许的最大堆 (heap) 大小。只能根据负载测试和垃圾回收结果来更改这些设置。

    返回页首

    1. 关闭调试。关闭调试的方法有许多种:
    • 确定域目录中是否有 debug.properties 文件。如果有,请将其删除。然后,关闭调试标志。您可以像下面那样使用 -D 选项:
    -DdebugFlag="false" -DverboseLoggingLevel="false"

    或者以下面的方式使用 weblogic.Admin 命令行选项:
    java weblogic.Admin -url t3://localhost:7001 -username system -password weblogic SET -mbean debugFlags:Name=AdminServer,Server=AdminServer,Type=ServerDebug -property verboseLoggingFlag false

    java weblogic.Admin -url t3://localhost:7001 -username system -password weblogic SET -mbean debugFlags:Name=AdminServer,Server=AdminServer,Type=ServerDebug -property debugFlag false
    • 如果使用的是 NodeManager,则必须在 nodemanager.properties 文件中将记录 (log)功能关闭,或使用 java 命令行选项:
    -Dweblogic.nodemanager.LogLevel...

    返回页首

    1. 更新数据库的统计信息。
    这将对数据库重新索引,根据使用情况统计信息来优化数据库。多数情况下,我们使用 SQL 脚本来完成此操作。请参阅 $BEAHOME/weblogic81/portal/db/<db vender>/<db version>/admin

    返回页首
    1. 根据下列指南调优您的操作系统 OS:
    http://e-docs.bea.com/wls/docs81/perform/topten.html#1128061
    http://e-docs.bea.com/wls/docs81/perform/topten.html#1127931 备注:(调优)不是越多越好。按照说明“正确地”调优系统,除非您有硬性的负载试验结果显示其它可能。

    返回页首


    1. 如果严重的生产性能问题依然存在,请使用 OS 的性能监视命令创建一个监视脚本。
    在 Solaris 上,可使用下面的脚本。多数情况下,可将该脚本转换成可以在您的 Unix 上工作的脚本。对于 MS/Intel 系统,您可以使用:

    #!/bin/ksh
    #
    LOGDIR="/tmp/test"
    mkdir $LOGDIR
    NETSTAT_OUTFILE="$LOGDIR/netstat.out"
    MPSTAT_OUTFILE="$LOGDIR/mpstat.out"
    VMSTAT_OUTFILE="$LOGDIR/vmstat.out"
    IOSTAT_OUTFILE="$LOGDIR/iostat.out"
    PS_OUTFILE="$LOGDIR/ps_aux.out"
    WLS_TD_OUTFILE="$LOGDIR/thread_dumps.out"
    INTERVAL=5
    COUNT=10
    TIME=`expr $INTERVAL \* $COUNT`
    TIMEPLUS=`expr $TIME + 5`
    X=1

    while [ $X != 200 ]
    do
        echo "" >> $PS_OUTFILE
        date >> $PS_OUTFILE
        /usr/ucb/ps -aux >> $PS_OUTFILE &
        echo "" >> $MPSTAT_OUTFILE
        date >> $MPSTAT_OUTFILEmpstat $INTERVAL $COUNT >> $MPSTAT_OUTFILE &

        MPSTATPID=$!
        echo "" >> $VMSTAT_OUTFILE
        date >> $VMSTAT_OUTFILE
        vmstat$INTERVAL $COUNT >> $VMSTAT_OUTFILE &

        VMSTATPID=$!
        echo "" >> $IOSTAT_OUTFILE
        date >> $IOSTAT_OUTFILE
        iostat -xp $INTERVAL $COUNT >> $IOSTAT_OUTFILE &
        IOSTATPID=$!
        echo "">> $NETSTAT_OUTFILE
        date >> $NETSTAT_OUTFILE
        netstat -i $INTERVAL >> $NETSTAT_OUTFILE &
        NETSTATPID=$!

        java weblogic.Admin -url ManagedHost:8001 -username weblogic -password weblogic THREAD_DUMP >> $WLS_TD_OUTFILE

        echo "mpstat $MPSTATPID"
        echo "vmstat $VMSTATPID"
        echo "iostat $IOSTATPID"
        echo "netstat $NETSTATPID"
        echo "sleeping for $TIMEPLUS"
        sleep $TIMEPLUS
        echo "sleeping done"
        kill -9 $NETSTATPID
        X=`expr $X + 1`
    done

    在问题开始显现时执行监视脚本,大约 2 – 5 分钟后将其关闭。

    返回页首

    1. 如果问题仍然存在或需要进一步帮助,请致电 BEA 支持部门。
    如果仍然无法确定系统的问题所在,则请通过 http://support.bea.com 创建一个 BEA 支持案例 (case),并以压缩档案的形式提供下列文件:
  • 服务器日志 (server log)
  • 所有监视脚本输出
  • Thread Dump 输出
  • setDomainEnv.cmd/sh
  • startWebLogic.cmd/sh
  • config.xml
  • web.xml
  • weblogic.xml
  • netuix-config.xml
  • application-config.xml

  • 返回页首


    所有 Service Pack-深入分析
    有关 Solaris 上性能问题的深入分析的信息,请参阅下列链接。http://e-docs.bea.com/wlp/docs81/perftune/index.html
    如何分析 stats:http://www.sun.com/sun-on-net/itworld/UIR981001perf.html
    如何分析 mpstat:http://www.sun.com/sun-on-net/itworld/UIR980801perf.html
    如何分析 vmstat:http://www.sun.com/sun-on-net/itworld/UIR960901perf.html

    WLP 8.1 SP2

    WebLogic Portal Service Pack 2 有相当多的可扩展性和性能问题,客户应尽快升级到 Service Pack 的更高版本(最好是 WLP 8.1 SP4)。此外,还可以采取一些措施来优化性能。 <>
    • <>将 session timeout (web.xml) 设置为 20 分钟或更少。
    • <>尽可能大地配置堆 (heap)。
    • 如果可能的话,将页面流 (Page flow) 中的所有内容都包括到 pageContext 中。将数据集包括到 pageFlow、请求或会话时要格外小心。请记住,将请求级的属性间接包括到会话中。
    WLP 8.1 SP3
    此 Service Pack 明显优于 WLP 8.1 SP2,且不会存在 WLP 8.1 SP2 中的性能和功能问题。
    • 特别注意此缓存:portalControlTreeCache
    • 关闭不使用的项。
    • 使用新的可用缓存:documentIdCache、entityIdCache、nodePathCache
    WLP 8.1 SP4
    此 Service Pack 针对性能进行了重新设计。打开树 (tree) 优化功能。多数情况下,根据内部负载试验,它将显著提高性能。使用新的可用缓存:documentIdCache、entityIdCache、nodePathCache


    返回页首


    需要更多帮助?
    如果您已经理解这个模式,但仍需要其它帮助,您可以:
    1. http://support.bea.com 上查询 AskBEA(例如,使用 What could cause WLP performance problems?),以发现其它已发布的解决办法。技术支持合同客户:确保已经登录,可以访问提供的与 CR 有关的信息。
    2. http://forums.bea.com 上,向 BEA 的某个新闻组提出更详细具体的问题
    如果这还不能解决您的问题,并且您拥有有效的技术支持合同,您可以通过登录以下网站来打开支持案例:http://support.bea.com/

    反馈

    请向我们提供您的意见,说明此支持诊断模式“诊断 Portal 性能问题”一文是否有所帮助、您需要的任何解释,以及对支持诊断模式的新主题的任何要求。

    免责声明:

    依据 BEA 与您签署的维护和支持协议条款,BEA Systems, Inc. 在本网站上提供技术技巧和补丁供您使用。虽然您可以将这些信息和代码与您获得 BEA 授权的软件一起使用,但 BEA 并不对所提供的技术技巧和修补程序做任何形式的担保,无论是明确的还是隐含的。

    本文档中引用的任何商标是其各自所有者的财产。有关完整的商标信息,请参考您的产品手册。

    ?