您的位置:首页 > 产品设计 > UI/UE

WebLogic Server 8.1 Performance Tuning Guide

2011-01-04 09:05 281 查看

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>&1HP-UX,
-Xverbosegc:file=/tmp/gc$$.out

BEA JRockit: -Xgcreport

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

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


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

5 调整WebLogic
Server

的参数

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

激活native pack

调整backlog buffer

TCP
层可保持的最大的连接数,默认值50
如果客户机无法连接WebLogic Server,
可以调整取值

定制执行队列,指派servlets
、JSPs
、EJBs
到执行队列

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

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

防止死锁的发生

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 ...

在使用连接池时,InitialCapacity
和MaxCapacity
应一致,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
console
,Configuarion
à General
à Java
Compiler
以及Configuration
à
General
à Advanced
Options
à Append to classpath

通过weblogic.xml
的jsp-descriptor
参数,compileCommand
和precompile

6
监控磁盘和CPU

的使用情况,包括应用服务器和数据库服务器

Solaris
和Linux

disk, iostat –D
<interval>

CPU, iostat
<interval>

Windows

perfmon

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

WebLogic Server
的I/O
瓶颈

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

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

7 监控网络上的数据传输

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

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

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

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

9 定位应用的瓶颈

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

使用JProbe
或OptimizeIt
探测系统瓶颈

服务器CPU
利用率达到100%
后,
可继续使用JProbe
或OptimizeIt
调优

10调整应用

EJB

weblogic-ejb-jar.xml
描述

Initial-beans-in-free-pool

默认值0
Max-beans-in-cache

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

Max-beans-in-free-pool

对于session bean
和MDB
,可以减少实例化开销;对于entity
bean
,用于finder
和home
方法。一般不需要修改,默认值1000
监控EJB, Pool Miss Ratio, Destroyed Bean Ratio,
Transaction Rollback Ratio, Transaction Timeout Ratio


JSP
和servlet

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

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

预编译JSP

JMS

不要使用JMS message selectors

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

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

Session
管理
Session
影响性能
客户机cookie
值得考虑
使用本地变量保持对象
聚合对象,然后放入session
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: