WebLogic Server 8.1 Performance Tuning Guide

1  了解性能的目标

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

CPU 、内存、网络等信息

2  调优操作系统

Solaris 调优

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

Solaris 2.7 之前,tcp_time_wait_interval 的命名是tcp_close_wait_interval

其它可用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

 

 

可以编辑/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

 

 

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

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

HP-UX 调优

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

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

AIX 调优

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

Linux 调优

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

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

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

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

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

 

3  优化数据库

总体考虑

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

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

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

Oracle 调优(8.1.7 版本)

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

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

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

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

SQL Server 调优

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

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

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

Sybase 调优

适当加大恢复间隔时间

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

4  确定Java 虚拟机的设置

Sun JDK

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

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

JRockit JDK

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

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

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

–XX:SurvivorRatio 可设置成8

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

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

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

BEA JRockit: -Xgcreport

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

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

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

5  调整WebLogic Server 的参数

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

激活native pack

调整backlog buffer

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

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

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

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

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

防止死锁的发生

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>

EJB 范例(weblogic-ejb-jar.xml

<weblogic-enterprise-bean>

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

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

</weblogic-enterprise-bean>

RMI 对象范例

java weblogic.rmic -dispatchPolicy CriticalAppQueue ...

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

设定SQL 语句缓存

指派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>

调整Java 编译器

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

通过weblogic.xmljsp-descriptor 参数,compileCommandprecompile

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

SolarisLinux

disk, iostat –D <interval>

CPU, iostat <interval>

Windows

perfmon

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

WebLogic ServerI/O 瓶颈

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

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

7  监控网络上的数据传输

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

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

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

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

9  定位应用的瓶颈

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

使用JProbeOptimizeIt 探测系统瓶颈

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

10 调整应用

EJB

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

 

 

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

JSPservlet

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

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

预编译JSP

JMS

不要使用JMS message selectors

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

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

Session 管理

Session 影响性能

客户机cookie 值得考虑

使用本地变量保持对象

聚合对象,然后放入session

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值