WebLogic性能优化配置

时间:2022-09-20 20:44:51
        这是从BEA公司的工程师得到的,拿出来给大伙分享一下。

     

WebLogic Server 8.1

                            Performance Tuning Guide

1       了解性能的目标

q       用户数、请求数、允许的响应时间

q       CPU、内存、网络等信息

2       调优操作系统

q       Solaris调优

o        ndd –set /dev/tcp tcp_time_wait_interval 60000, socket的关闭保持时间缩短为60秒(默认为240秒)

o        Solaris 2.7之前,tcp_time_wait_interval的命名是tcp_close_wait_interval

o        其它可用ndd –set调整的参数

 

参数

建议值

/dev/tcp tcp_time_wait_interval

60000

/dev/tcp tcp_conn_req_max_q

16384

/dev/tcp tcp_conn_req_max_q0

16384

/dev/tcp tcp_ip_abort_interval

60000

/dev/tcp tcp_keepalive_interval

7200000

/dev/tcp tcp_rexmit_interval_initial

4000

/dev/tcp tcp_rexmit_interval_max

10000

/dev/tcp tcp_rexmit_interval_min

3000

/dev/tcp tcp_smallest_anon_port

32768

/dev/tcp tcp_xmit_hiwat

131072

/dev/tcp tcp_recv_hiwat

131072

/dev/tcp tcp_naglim_def

1

/dev/ce instance

0

/dev/ce rx_intr_time

32

 

o        可以编辑/etc/system的参数设定

 

参数

建议值

set rlim_fd_cur

8192

set rlim_fd_max

8192

set tcp:tcp_conn_hash_size

32768

set shmsys:shminfo_shmmax

Note: This should only be set for machines that have at least 4 GB RAM or higher.

4294967295

set autoup

900

set tune_t_fsflushr

1

 

o        Solaris 8参考docs.sun.com/db/doc/816-0607

o        Solaris 9参考docs.sun.com/db/doc/806-7009

q       HP-UX调优

o        参见docs.hp.com/hpux/onlinedocs/TKP-90203/TKP-90203.html

o        Java性能调整参见h21007.www2.hp.com/dspp/tech/tech_TechDocumentDetailPage_IDX/1,1701,1602,00.html

q       AIX调优

o        参见publib16.boulder.ibm.com/pseries/en_US/aixbman/prftungd/prftungd02.htm

q       Linux调优

o        可以调整一下mtu, /sbin/ifconfig lo mtu 1500

o        也可参见ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html

q       Windows调优(通常情况下,默认的设置是可用的)

o        参见www.microsoft.com/windows2000/techinfo/howitworks/communications/networkbasics/tcpip_implement.asp

o        www.microsoft.com/technet/treeview/default.asp?url=/TechNet/prodtechnol/windows2000serv/maintain/optimize/perftune.asp

 

3       优化数据库

q       总体考虑

o        数据库设计,包括跨磁盘负载分担、数据表的组织和尺寸、索引、日志等

o        磁盘I/O优化,包括限制I/O的次数,加大缓冲区等

o        控制Checkpoint频率。有些数据库可以,如Oracle, 有些则不行,如SQL Server 7

q       Oracle调优(8.1.7版本)

o        服务进程数,检查的方法是SELECT name, value FROM v$parameter WHERE name = ’processes’;

o        共享池尺寸,检查池当前可用值的方法是SELECT * FROM v$sgastat WHERE name = ’free memory’ AND pool = ’shared pool’;

o        最大打开游标数,检查的方法是SELECT name, value FROM v$sysstat WHERE name LIKE ’opened cursor%’;

o        数据块尺寸,检查的方法是SELECT name, value FROM v$parameter WHERE name = ’db_block_size’;

q       SQL Server调优

o        tempdb定位在快速I/O设备上

o        如果性能监视显示I/O频率加快,可以加大恢复间隔时间

o        采用2KB以上的数据块尺寸

q       Sybase调优

o        适当加大恢复间隔时间

o        采用2KB以上的数据块尺寸

4       确定Java虚拟机的设置

q       Sun JDK

o        -server, -client, -Xms, -Xmx, -XX:NewSize, -XX:MaxNewSize, -XX:SurvivorRatio, -XX:+UseISM, -XX:+AggressiveHeap

q       Sun JVM的其它参数见java.sun.com/docs/hotspot/VMOptions.html

q       JRockit JDK

o        -Xms, -Xmx, -Xns, -Xgc:parallel, -Xxenablefatspin

q       堆取值是系统剩余内存的80%

q       –XX:NewSize, -XX:MaxNewSize为堆大小的1/4,多CPU环境下适量增大

q       –XX:SurvivorRatio可设置成8

q       不要在benchmark期生成GC,观察GC的方法

o        Windows, Solaris: … -verbosegc … >> log.txt 2>&1

o        HP-UX, -Xverbosegc:file=/tmp/gc$$.out

o        BEA JRockit: -Xgcreport

o        通过日志时间戳,计算GC的频度

o        观察GC耗费的时间,不要超过5

o        GC后的堆可用内存不应增长过多

5       调整WebLogic Server的参数

q       调整执行队列的线程数,线程数和单笔响应时间成正比

q       激活native pack

q       调整backlog buffer

o        TCP层可保持的最大的连接数,默认值50

o        如果客户机无法连接WebLogic Server, 可以调整取值

q       定制执行队列,指派servletsJSPsEJBs到执行队列

o        保证关键应用高性能的运转

o        限制非关键应用可占用的资源

o        防止死锁的发生

o        JSP, servlet范例(web.xml

<servlet>
   <servlet-name>MainServlet</servlet-name>
   <jsp-file>/myapplication/critical.jsp</jsp-file>
   <init-param>
      <param-name>wl-dispatch-policy</param-name>
      <param-value>CriticalAppQueue</param-value>
   </init-param>
</servlet>

o        EJB范例(weblogic-ejb-jar.xml

<weblogic-enterprise-bean>

   <ejb-name>…</ejb-name>

   <dispatch-policy>CriticalAppQueue</dispatch-policy>

</weblogic-enterprise-bean>

o        RMI对象范例

java weblogic.rmic -dispatchPolicy CriticalAppQueue ...

q       在使用连接池时,InitialCapacityMaxCapacity应一致,MaxCapacity的取值应比线程数大

q       设定SQL语句缓存

q       指派Application-Level Caching, 范例(weblogic-application.xml

<weblogic-application>

<ejb>

    <entity-cache>

        <entity-cache-name>large_account</entity-cache-name>

        <max-cache-size>

            <megabytes>1</megabytes>

        </max-cache-size>

    </entity-cache>

</ejb>

</weblogic-application>

q       调整Java编译器

o        通过admin consoleConfiguarion à General à Java Compiler以及Configuration à General à Advanced Options à Append to classpath

o        通过weblogic.xmljsp-descriptor参数,compileCommandprecompile

6       监控磁盘和CPU的使用情况,包括应用服务器和数据库服务器

q       SolarisLinux

o        disk, iostat –D <interval>

o        CPU, iostat <interval>

q       Windows

o        perfmon

q       如果数据库CPU利用率过高,考虑索引的设计;如果磁盘利用率为100%,可考虑更快的磁盘或RAID

q       WebLogic ServerI/O瓶颈

o        JMS file store写操作,事务日志,HTTP日志,服务器日志

o        试用禁止同步的JMS写操作、加大HTTP日志缓冲区等方法

7       监控网络上的数据传输

q       确定客户机与服务器、服务器与数据库之间的传输数据量

q       使用命令netstat –s –P tcp, 查看是否有retransmission的发生

8       检查频繁的标准输出或日志

q       减少日志操作,关闭System.out.println语句

9       定位应用的瓶颈

q       如果磁盘和网络不是瓶颈,服务器的CPU利用率又较低,则可能存在锁冲突

q       使用JProbeOptimizeIt探测系统瓶颈

q       服务器CPU利用率达到100%, 可继续使用JProbeOptimizeIt调优

10             调整应用

q       EJB

o        weblogic-ejb-jar.xml描述

 

Initial-beans-in-free-pool

默认值0

Max-beans-in-cache

面向stateful session beanentity bean, 影响活跃和钝化

Max-beans-in-free-pool

对于session beanMDB,可以减少实例化开销;对于entity bean,用于finderhome方法。一般不需要修改,默认值1000

 

o        监控EJB, Pool Miss Ratio, Destroyed Bean Ratio, Transaction Rollback Ratio, Transaction Timeout Ratio

q       JSPservlet

o        关闭JSP页面检查和servlet重加载

o        使用基于内存的session持久策略

o        预编译JSP

q       JMS

o        不要使用JMS message selectors

o        使用异步的方式(onMessage)接收消息

o        参见dev2dev.bea.com/products/wlserver/whitepapers/WL_JMS_Perform_GD.jsp

q       Session管理

o        Session影响性能

o        客户机cookie值得考虑

o        使用本地变量保持对象

o        聚合对象,然后放入session