Go ahead every day !

WebSphere 和 DB2 调优指南--摘录

上一篇 / 下一篇  2009-01-06 15:25:10 / 个人分类:性能测试

IBM WebSphere Portal Web Content ManagerDB2调优指南

j G S^T7kcU)@0

  正在寻找一个资源中心来调优WebSphere® Portal Web Content ManagementIBM® DB2®for Linux®, UNIX®, and Windows®环境?本文描述该环境独特的、需要特殊考虑的各个部分。您将学习如何调优Application ServerWebSpherePortal。作为良好的开端,您将学习一些应该设置为指定值的各种注册表变量和数据库管理器及数据库配置参数。最后,持续维护小节提供了如何使DB2系统随系统增长仍然高效运行的指导原则。51Testing软件测试网 M~(c Q'^p(kH
  对环境进行性能调优
+E{Z!]sg;B5q8_;]1I$Q0
  WebSphere Portal环境的调优涉及到对该环境的不同的系统和组件的调优和配置。本节讨论一些通用的概念,并详细描述本文评测环境所使用的配置的特征。WebSpherePortal Web Content Management (WCM) AIX® Power4评测环境的配置和调优是基于WebSpherePortal AIX Power4环境的,IBM WebSphere Portal Version 6.0 Tuning Guide对后者作了详细阐述。用于评测WCM的环境的所有不同之处在本章中都会明确提出。对任何WebSphere Portal环境的完整的调优和配置方法包括:
Y G5m/b w0
  配置应用服务器和为这个应用服务器定义的资源

[)n#M(m|4l7R(L0J0
  确定用于扩展环境的复制策略
51Testing软件测试网6Uz3yZ5?s#lqX?&y
  调优数据库和数据库服务器
51Testing软件测试网B)q0T _ H;L#w"~(TL
  调优目录服务器和它的数据库

"lis"p+z*@ X0
  调优web服务器

'\9X J P9p+n0
  调优操作系统和网络
51Testing软件测试网 eU"Sn dR
  调优WebSphere Portal服务

~jJt4a.aHn0
  在调优各个系统时,首先应该具备一个基准,并监视性能指标,以确定是否应该更改某个参数,当作出更改时,也要监视性能指标,以确定更改的效果。
51Testing软件测试网 F E@7OQ&?i0~+K
  了解环境

d*opK I k0
  WebSphere Portal V6.0使用附加的服务器来提供其功能。在我的评测环境中,除了portal服务器本身以外,还有一个Web服务器,一个数据库服务器和一个目录服务器,这些服务器放在WebSphere Portal系统之外的单独的系统上。采用这种配置的主要好处是可以避免同一个系统上的多个服务器之间争用资源。如果其他服务器与WebSpherePortal服务器争用资源,就会影响系统可达到的吞吐率。在本报告中,用于评测的配置将IBM HTTP ServerWebSpherePortal放在同一个系统上。51Testing软件测试网^Q"g6_[#['f
  应用服务器调优

A3Qd'~7r0
  在WebSphere ApplicationServer中,应用服务器的配置和调优有很多方面。我发现,本文和IBM WebSphere Portal Version 6.0Tuning Guide中描述的那些方面对于WebSphere Portal在我们的实验环境中正确、高效地运行非常关键。
)Xf4Y g3oh0
  根据我对于本文描述的工作负载的经验,表1展示了与用于Power4平台的AIXIBM WebSphere Portal Version 6.0 Tuning Guide不同的一些配置:
sA#Kz_.tC6~$f0
  表1.应用服务器参数
51Testing软件测试网d%fH{8HL

参数

:me2U[8l-I @n @c0

设置51Testing软件测试网#W)_|3G9Dh

其他细节51Testing软件测试网"V-g0I Wc-X|G

Java™ Virtual Machine (JVM)堆大小

3dY P"~w+dL0

1792

M8W7I~uJH6q:_@6Q0

请注意,JVM堆的大小与系统的物理内存的大小有直接的关系。永远不要将JVM堆大小设置为大于系统的物理内存大小。  请参阅JVM最大堆大小限制51Testing软件测试网!Z@CXz G$`qCpb

JVM堆大内存页51Testing软件测试网8s)ta-T [FU

-Xlp51Testing软件测试网}3j&S ~+?7B5P2J

IBM JVM一起使用,用于分配具有大内存页的堆。  请参阅JVM堆大内存页51Testing软件测试网f9snO+o fA8_v7v)e

kCluster and  pCluster51Testing软件测试网1xns[5m+rb&ab!W

-Xk30000  -Xp24000k,2400k

/pE-I&S!e0

固化簇。为类文件预先分配JVM堆,因为类文件一旦被装载,就固化在内存中。  请参阅kClusterpCluster

.pU Y pl,{$WTOF0

  JVM最大堆大小限制
pc7j t)? fM6U6K0
  在为应用服务器设置堆大小时,要记住:确保系统有足够的物理空间,以便将所有进程装入物理内存,并满足操作系统需要。如果分配的内存大于系统的物理内存,就会发生分页,从而导致糟糕的性能。51Testing软件测试网*Kr1B`2S%SCmS P
  我将堆大小的最小值和最大值设置为相同的值,对于在IBM JDK上运行的生产系统来说,这可能不是最佳选择。在我的评测中,系统承受负载的时间很短(大约3小时),并且运行的portlet的内存需求不大。如果使用内存需求较大的portlet,或者要持续运行,那么通过将初始堆大小设置为320 MB可能会减少堆碎片。
51Testing软件测试网%SG2h h J/t#N
  对堆大小进行调优之后,要监视系统,以确保没有发生分页。如前所述,换页会导致糟糕的性能。

/Bj([:Y'eD8Ox0

 

TL"{'`aF0

如何设置参数:  在WebSphere Administrative Console中,选择Servers-> Application Servers -> WebSphere Portal -> ServerInfrastructure: Java and Process Management -> Process Definition-> Java Virtual Machine
~ o ufB0Aw0
  可以在下面两个地方更改堆大小:
51Testing软件测试网#Q1f8X;c)m]
  - Initial Heap Size
wa7U:I;o5~0
  
- Maximum Heap Size
Dn/ptX-BHf0
  JVM堆大内存页
51Testing软件测试网j3s7O%N`@:^
  该设置可以与IBM JVM一起使用,以使用大内存页分配堆空间。为支持大内存页,AIX操作系统必须进行配置。使用大内存页可以减少跟踪堆所需的CPU开销。通过这样的调优,我的评测吞吐率提高了10%51Testing软件测试网@4\ urK8R$K zY"@
  如何设置参数:
.cMLGaP$a0
  在WebSphere Administrative Console中,选择Servers -> ApplicationServers -> WebSphere Portal -> Server Infrastructure: Java andProcess Management -> Process Definition -> Java Virtual Machine-> Generic JVM Argument51Testing软件测试网!]_k!W[f0o0kUo
  添加:
-Xlp51Testing软件测试网{2`P}X0E/l
  在WebSphereAdministrative Console中,选择
Servers -> Application Servers ->WebSphere Portal -> Server Infrastructure: Java and ProcessManagement -> Process Definition -> Custom Properties -> New-> EXTSHM=OFF51Testing软件测试网7myv@`
  (注意:当EXTSHM开启时,会阻止大内存页的使用。)
51Testing软件测试网+v J.tto sh3\)T
  停止Portal服务器
51Testing软件测试网pQ e*T|3B7s
  配置AIX,以支持大内存页。我使用以下步骤分配1856 MBRAM作为大内存页(16MB)。之所以选择这个大小,是因为这些系统中有4GB的物理内存。对于采用不同物理内存大小的系统,这些值应有所调整。

6hP-A9O5{B0
  vmo -r -o lgpg_regions=116 -o lgpg_size=16777216
:VHt({0bG0
  
bosboot -a
m[~FT0
  
reboot -q51Testing软件测试网X/?HF4t!?Y.M
  
vmo -p -o v_pinshm=151Testing软件测试网'q,YBm4O-K*b,i \"r"b
  
chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE $USER51Testing软件测试网z%kS(JF'N"Ro D
  重新启动Portal Server。要确认是否正在使用大内存页,运行AIX命令vmstat -l 1 5并查看“alp”列,它是当前使用的活动大内存页。如果正在使用大内存页,那么它应该是一个非0值。
51Testing软件测试网9KH6C p.t
  kCluster
pCluster51Testing软件测试网#s y S8fkj5N A&Zo
  JVM堆上的对象通常是移动的;也就是说,Garbage CollectorGC)在决定重排列堆时,可能会移动这些对象。但是,无论是永久地还是暂时地,有些对象是不能移动的。那些不能移动的对象被称作固化对象(pinned object)。

.B"t ^LI }C0
  在版本1.3.1Service Refresh 7及之前版本中,GC首先在堆的底部分配一个kCluster作为第一个对象。kCluster是一个存储区域,专门用于类块。它大到足以容纳1280个条目。每个类块长度为256字节。
5T I%J1ux d8yJ$W Ht0
  然后,GC分配一个pCluster作为堆上的第二个对象。pCluster是用于分配固化对象的存储区域。它的长度为16 KB51Testing软件测试网7Yg5q+Ev/r3G;h M
  当kCluster耗尽时,GC将类块分配在pCluster中。当pCluster也耗尽时,GC分配一个2 KB的新的pCluster51Testing软件测试网W2Z x[ Q7h;nM'{(D
  由于这个新的pCluster可以分配在堆中的任何位置,并且必须是固定的,因此可能导致碎片问题。固化对象使GC不能在堆压缩期间合并空闲空间,因而可能导致一个堆有很多容量较小的空闲空间,所以即使某次分配明显少于空闲空间总量,也不能成功分配。为解决这个问题,1.3.1和更高版本的SR7提供了一些命令行选项,用于指定kCluster-Xk)、pCluster-Xp)和pCluster的溢出大小(-Xp)。使用这些选项将簇的初始大小设置得足够大,以避免碎片问题。51Testing软件测试网1Y N0B;j HZ
  如何设置参数:
0q6I WiTG#Ez0
  在WebSphere Administrative Console中,选择Servers -> Application Servers-> WebSphere Portal -> Server Infrastructure: Java and ProcessManagement -> Process Definition -> Java Virtual Machine ->Generic JVM Argument
"bF LFh6y\0
  输入
-Xk30000 -Xp24000k,2400k51Testing软件测试网#m2w B;qx%I#{PH
  数据源调优

b?1O*h{&M0K'p0
  根据WebSphere Portal信息中心的描述,WebSphere Portal V6.0使用多个数据库。在我的例子中,我使用7个独立的数据库,每个数据库都有它自己的数据源。这些数据源是:
4O8nl d%@"W}|0
  表2.数据源名称

v(z#c?RPu `|m ^'U0

数据库51Testing软件测试网(]0um[|O

数据库名称51Testing软件测试网K*W+Z3[(ct

数据源名称51Testing软件测试网J4Q&A'Y&W,l|1}"Y

Release

b[3qx M0

release51Testing软件测试网"W+Q3nRm&K2R

reldbDS51Testing软件测试网Buw[ Iwb%@

Community

X4aX-u!CmPFo e0

community

4G$W M(UKu0

commdbDS51Testing软件测试网9C1h{Uf(J3J

Customization51Testing软件测试网 L/DP R&cbo

custom

Z%}OM"ER5a0

cusdbDS51Testing软件测试网8@kA,p4U!p3t5J

Feedback

ufulY0

fdbkdb51Testing软件测试网&Oj(zC.Mo;D6U

fdbkdbDS51Testing软件测试网w`0ot PB;S9[ M

Likeminds51Testing软件测试网 H(dC+WF@

lmdb51Testing软件测试网G ]xh7]/a8{,E5FM

lmdbDS

j/{+ic x\6t`/W+h7}C0

JCR51Testing软件测试网|E.@|,Y;V/d

jcrdb

f"m d3fi~+{0

jcrdbDS

-g|#se{/_)[#L0

Member Manager

8rd3BL2]M0

wmmdb51Testing软件测试网 `"I(u(W$K v

wmmdbDS

5Yu@"M5\xL0

对于预置语句缓存大小,路径为Resources -> JDBC Providers -> provider name-> Data Sources -> datasource name -> WebSphere ApplicationServer data source propertiesprovider namedatasource name随数据库迁移期间为数据库选定的名称而定。查看参数statement cache size
5Cx6b7JMg0
  我们将所有数据源的预置语句缓存大小设为1条语句,以减少对本地内存的需求,从而避免系统崩溃。
51Testing软件测试网(e#j(Y'j!Lu-JQ!K

 

p;q:xp#J ?0

 51Testing软件测试网J!JS7PL5ZG(q*}JI

 

6\ yXYAgcCB:W0

 51Testing软件测试网#^;@7VR(gH/a}&jep

 

Z'})m(lx%?0

 51Testing软件测试网a/{ a.qTi2l O.x

 51Testing软件测试网*@,Z[b'~DK2s


'O:p:h5GM0
  DB2注册表变量
Z pnZ{A$U0
  下面的注册表变量应该在实例级设置(使用db2set命令):51Testing软件测试网nc{$d7K6H1Fg
  表3. DB2注册表变量解释

7vTO0} k1Iu0

注册表变量

*T*bx2mR b^N&d0

描述

,RN)\}&EjO{0

DB2_RR_TO_RS51Testing软件测试网/^ w1oUeA0C

DB2 v8.2开始,不推荐使用该参数。如果在8.2以上版本的DB2中尝试设置该参数时没有遇到错误,那么可以设置该参数。如果遇到错误,也没有关系。接下来的两个变量就是用来替代它的。  当DB2_RR_TO_RS开启时,不能确保RR扫描用户表的行为,因为在索引键插入和删除期间不会锁定下一个键。但是编目表不受这个选项的影响。当DB2_RR_TO_RS开启时,另一个变化的行为是,扫描将跳过已经被删除但是尚未提交的行,即使这些行符合扫描条件也是如此。51Testing软件测试网|*E/h%A p0S*`](`

DB2_EVALUNCOMMITTED51Testing软件测试网!IX#o3_%p1u ]

该变量被启用时,将允许表或索引访问扫描推迟或避免行锁,直到发现一个数据记录满足谓词条件。DB2_EVALUNCOMMITTED只适用于使用Cursor StabilityRead Stability隔离级别的语句。对于索引扫描,索引必须是type-2索引。而且,虽然在type-2索引扫描中,被删除的行不会被跳过,但是除非同时设置了注册表变量DB2_SKIPDELETED,否则在表扫描访问中,被删除的行将被无条件跳过。

9o#ph3M'A X3\uAn0

DB2_SKIPDELETED

w9?&xO~|d H HZ0

该变量被启用时,将允许使用Cursor StabilityRead Stability隔离级别的语句在索引扫描期间无条件地跳过被删除的键,而在表访问期间则无条件地跳过被删除的行。当DB2_EVALUNCOMMITTED被启用时,被删除的行会被自动跳过,但是除非同时启用了DB2_SKIPDELETED,否则type-2索引中未提交的伪删除键不会被跳过。51Testing软件测试网/yq0_KV;I

DB2_INLIST_TO_NLJN51Testing软件测试网D Z/t+X:EWz&d

有时候,优化器没有准确的信息来确定用于重写查询的最佳连接方法。如果IN列表中包含参数标记符或主机变量,使优化器不能使用编目统计信息来确定选择性,就会出现这种情况。这个注册表变量会导致优化器优先使用嵌套循环连接来连接值列表,使用为IN列表提供值的表作为连接的内部表。51Testing软件测试网 YDY(C d"{{

DB2_MINIMIZE_LISTPREFETCH

$zO:KM6YdTD0fV0

为了避免对JCR数据库表的查询使用低效的访问计划,这个变量是必需的。

OY Xmp$AZ0

 

dlt$XrVST0

  以实例用户身份,输入以下命令,以设置DB2注册表变量:51Testing软件测试网w1vJ6b Hs
db2set DB2_RR_TO_RS=YES51Testing软件测试网^BH)i(kI7g E(F~
db2set DB2_EVALUNCOMMITTED=YES
pt1]Uo6zc:um0db2set DB2_SKIPDELETED=ON51Testing软件测试网&|C)K&b0t
db2set DB2_INLIST_TO_NLJN=YES
0p&[$o+u#ruGS0db2set DB2_MINIMIZE_LISTPREFETCH=ON
,RW$\+_ @AW7a0
  可选变量
v6^"[T6K,bw m6uTW2[0
  如果DB2所在系统是CPU密集型,那么还可以设置下面的参数。由于这个变量对于所有包含多于5个连接的语句都有影响,因此要小心使用。该参数可以帮助减少优化期间占用的时间和资源。虽然这样可以减少优化所需的时间和资源,但是同时也会增加生成非最佳数据访问计划的风险。51Testing软件测试网ovq,Z&[5}7p;b2MWofz
  DB2_REDUCED_OPTIMIZATION=5
t.B#e+f,|2u0
  注意: 只有在IBM明确建议的情况下,才应该设置该参数。
51Testing软件测试网i(}G%~/tbK ^z3Def
  数据库管理器配置参数51Testing软件测试网c!vr W MA?L
  表4展示了数据库管理器配置参数:
W8_9RP7j&d?8[P0
  表4.数据库管理器配置参数

y.J~+HyKh8ex0

参数名

AO"m@k^ Gq8X0

51Testing软件测试网r%T$^5SclS

QUERY_HEAP_SZ

F3]7R:WMJy)wy-X0

32768

z _u!f)R0

MAXAGENTS

{v-s,]G%nO0

1000

mk9V(W g m.X0

SHEAPTHRES

*t'l!?R`D#tr0

5000051Testing软件测试网"j!vm0I5TEwV

HEALTH_MON

5J$Fg}sds6j;g0

OFF51Testing软件测试网7i`^2v3OVvH]X

ASLHEAPSZ

dEH,aH6nG9Y(_ AU0

6051Testing软件测试网CV'g3X^ {2xt

RQRIOBLK51Testing软件测试网Wn o G)P&[n.yb

65535

]1`;An4L:c3S0

  以实例用户的身份,输入以下命令,更新数据库管理器配置:51Testing软件测试网8G9S.A+Y,y:U cAu
db2 "update dbm cfg using query_heap_sz 32768"
$B.HH2Fs'v:B0db2 "update dbm cfg using maxagents 1000"
(ZHK J W2V ] e0db2 "update dbm cfg using sheapthres 50000"
!MBk+p!SX6B0db2 "update dbm cfg using health_mon off"51Testing软件测试网6vc6~*Kkrgn
db2 "update dbm cfg using aslheapsz 60"
)c1X(xTwd0db2 "update dbm cfg using rqrioblk 65535"51Testing软件测试网Z{k6GM]?Gjb$nQ
db2 "update dbm cfg using federated no"51Testing软件测试网3{ e.ROfO7i3c
  注意: 如果需要联邦数据库支持,不能将FEDERATED设为NO51Testing软件测试网 Xd#o!{9l ]\4Qiz
  数据库配置参数51Testing软件测试网/E8vo9k~_+Yy$S
  用于所有数据库的参数
h+Q0d$Chk(y0
  表5展示了应该为所有数据库设置的数据库配置参数:51Testing软件测试网3`f l%C ^I
  表5.用于所有数据库的数据库配置参数

RG"DW7{JA8O&WubH0

参数名

a0fi6J ]/mt.n[B0

+}[&o Y h ^"T#u0

APPLHEAPSZ

6n(`)v2L T$Go:G W0

409651Testing软件测试网#]1|M"w8UZ[

APP_CTL_HEAP_SZ

H,J4w0R8I8D-t0

102451Testing软件测试网&~(ru g0uG{[^T(E

STMTHEAP51Testing软件测试网7f;x2?!oa'a

819251Testing软件测试网T5rP;i ~-a5] K(rnl

DBHEAP

TAG: 性能调优

 

评分:0

我来说两句