<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>聚沙成塔-小哈的记事薄 &#187; 中间件</title>
	<atom:link href="http://www.hashei.me/category/%e4%b8%ad%e9%97%b4%e4%bb%b6/feed" rel="self" type="application/rss+xml" />
	<link>http://www.hashei.me</link>
	<description>一个系统工程师的絮叨</description>
	<lastBuildDate>Tue, 10 Jan 2012 18:03:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://hashei.me/wp-includes/js/jquery/jquery.js?ver=1.3.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
jQuery.ajax({type:'GET',url:'http://hashei.me/wp-content/plugins/wp-postviews-plus/postviews_plus.php',data:'todowppvp=add&type=cat&id=3_1',cache:false,dataType:'script'});
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>tuxedo11g MP 模式配置</title>
		<link>http://www.hashei.me/2011/12/tuxedo_mp_configuration.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tuxedo_mp_configuration</link>
		<comments>http://www.hashei.me/2011/12/tuxedo_mp_configuration.html#comments</comments>
		<pubDate>Sun, 04 Dec 2011 15:34:00 +0000</pubDate>
		<dc:creator>hashei</dc:creator>
				<category><![CDATA[tuxedo]]></category>

		<guid isPermaLink="false">http://www.hashei.me/2011/12/tuxedo_mp_configuration.html</guid>
		<description><![CDATA[随着一些项目对实时交易处理量和响应时间的要求较高，最近两月接触了交易中间件的安装配置。上一会写了CICS的相关内容，这次整理一下oracle tuxedo的内容。tuxedo 11g在系统架构和基础配置文件上和之前的版本没什么区别。下文内容为整理而得，较中文网络其它的文章，多了多域间网关对的配置，这一点在MP模式下还是较为有用的。
Tuxedo架构图


说明：域（DOMAIN）
域是具有相同功能或结构的应用系统的集合。应用系统可以有多台服务器组成。Tuxedo的域特性把客户/服务器模型扩展到多个独立自治的应用系统。一个域既可以是一组Tuxedo的应用程序，也可以是一组运行在另一个非Tuxedo环境中的应用程序。Tuxedo的每个域独立完成域内的操作，域间操作由域网关完成。
比较重要的进程为
1、BBL(Bulletin Board Liaison)，主要对公告板等进行管理，包含了一个公告牌的本地拷贝和本地服务器上应用的状态。
Bulletin Board（BB，公告板）：Tuxedo把系统的配置信息保存在一个共享内存中，该共享内存称为公告板。
2、DBBL(Distinguished Bulletin Board Liaison)，TUXEDO用于多服务器配置各个服务器之间的协调工作，只有当TUXEDO配置为MP方式时才需要用到DBBL。DBBL与BBL协同，保证所有的公告牌内容的一致性。
3、WSL：WorkStation Listener，Tuxedo系统自带的一个Server，它侦听一个指定的端口，WSC最初与该Server建立连接。
4、WSH：WorkStation Handler Server ，Tuxedo系统自带的一个Server，由它处理WSC与Tuxedo Server之间的通信。
5、BRIDGE，不同的服务器之间通过BRIDGE进程进行通讯，该BRIDGE的侦听IP地址及端口 在NADDR中指定。如果是在UNIX下要指定该BRIDGE所用的网络设备，如果是在NT下则不要。
6、DMADM，域间通信的进程：管理域的server,在运行时管理BDMCONFIG,对已登记的gateway group提供支持,在tuxedo系统中,只能有一个DMADM进程,且不能对它采用MSSQ,不能有REPLYQ
7、GWADM，管理DOMAIN的域网关进程（在/DOMAIN中是GWTDOMAIN）的SERVER，在运行时可以对某一组域网关（Domain Gateway Group）进行管理。主要从DMADM那里取得域的配置信息,并对域网管进程及跨越域的全局事务的LOG文件进行管理
8、GWTDOMAIN，处理DOMAIN之间的互操作,使本地域和调用远程域可以互相调用彼此的service,其中GMADM和GWTDOMAIN必须在一个组中,一个tuxedo应用可以有多个GWADM,GWTDOMAIN对,一个组只能有一个GMADM,GWTDOMAIN对,但一个tuxedo应用只能有一个DMADM, DMADM可以在任何一个组中,一个本地域可以和多个远程域实现互操作。
9、tlisten，是TUXEDO自带的管理程序，在MP模式下，完成主机之间的初始化通讯，如非MASTER机从MASTER机中下载tuxconfig配置文件。
tlisten的启动办法:tlisten –l //NLSADDR
以上几点概念清楚后，就可以尝试配置一个简单的tuxedo环境了。
 
官方的小写变大写例子

Example:
#       APPDIR=&#34;/usr/tuxedo/simpapp&#34;
#       TUXCONFIG=&#34;/usr/tuxedo/simpapp/tuxconfig&#34;
#       TUXDIR=&#34;/usr/tuxedo&#34;

&#60;machine name&#62; LMID=simple #machine name需要修改为自己的主机名
#Example:
#beatux     LMID=simple
*GROUPS
GROUP1
    [...]]]></description>
			<content:encoded><![CDATA[<p>随着一些项目对实时交易处理量和响应时间的要求较高，最近两月接触了交易中间件的安装配置。上一会写了CICS的相关内容，这次整理一下oracle tuxedo的内容。tuxedo 11g在系统架构和基础配置文件上和之前的版本没什么区别。下文内容为整理而得，较中文网络其它的文章，多了多域间网关对的配置，这一点在MP模式下还是较为有用的。</p>
<h4>Tuxedo架构图</h4>
<p><a href="http://hashei.me/wp-content/uploads/2011/12/1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="tuxedo架构图" border="0" alt="tuxedo架构图" src="http://hashei.me/wp-content/uploads/2011/12/1_thumb.png" width="644" height="293" /></a></p>
</p>
<p>说明：域（DOMAIN）</p>
<p>域是具有相同功能或结构的应用系统的集合。应用系统可以有多台服务器组成。Tuxedo的域特性把客户/服务器模型扩展到多个独立自治的应用系统。一个域既可以是一组Tuxedo的应用程序，也可以是一组运行在另一个非Tuxedo环境中的应用程序。Tuxedo的每个域独立完成域内的操作，域间操作由域网关完成。</p>
<p>比较重要的进程为</p>
<p>1、BBL(Bulletin Board Liaison)，主要对公告板等进行管理，包含了一个公告牌的本地拷贝和本地服务器上应用的状态。</p>
<p>Bulletin Board（BB，公告板）：Tuxedo把系统的配置信息保存在一个共享内存中，该共享内存称为公告板。</p>
<p>2、DBBL(Distinguished Bulletin Board Liaison)，TUXEDO用于多服务器配置各个服务器之间的协调工作，<strong>只有当TUXEDO配置为MP方式时才需要用到DBBL</strong>。DBBL与BBL协同，保证所有的公告牌内容的一致性。</p>
<p>3、WSL：WorkStation Listener，Tuxedo系统自带的一个Server，它侦听一个指定的端口，WSC最初与该Server建立连接。</p>
<p>4、WSH：WorkStation Handler Server ，Tuxedo系统自带的一个Server，由它处理WSC与Tuxedo Server之间的通信。</p>
<p>5、BRIDGE，不同的服务器之间通过BRIDGE进程进行通讯，该BRIDGE的侦听IP地址及端口 在NADDR中指定。如果是在UNIX下要指定该BRIDGE所用的网络设备，如果是在NT下则不要。</p>
<p>6、DMADM，域间通信的进程：管理域的server,在运行时管理BDMCONFIG,对已登记的gateway group提供支持,在tuxedo系统中,只能有一个DMADM进程,且不能对它采用MSSQ,不能有REPLYQ</p>
<p>7、GWADM，管理DOMAIN的域网关进程（在/DOMAIN中是GWTDOMAIN）的SERVER，在运行时可以对某一组域网关（Domain Gateway Group）进行管理。主要从DMADM那里取得域的配置信息,并对域网管进程及跨越域的全局事务的LOG文件进行管理</p>
<p>8、GWTDOMAIN，处理DOMAIN之间的互操作,使本地域和调用远程域可以互相调用彼此的service,其中GMADM和GWTDOMAIN<strong>必须</strong>在一个组中,一个tuxedo应用<strong>可以有多个</strong>GWADM,GWTDOMAIN对,一个组<strong>只能</strong>有一个GMADM,GWTDOMAIN对,但一个tuxedo应用<strong>只能有</strong>一个DMADM, DMADM可以在任何一个组中,一个本地域可以和<strong>多个</strong>远程域实现互操作。</p>
<p>9、tlisten，是TUXEDO自带的管理程序，在MP模式下，完成主机之间的初始化通讯，如非MASTER机从MASTER机中下载tuxconfig配置文件。</p>
<p>tlisten的启动办法:tlisten –l //NLSADDR</p>
<p>以上几点概念清楚后，就可以尝试配置一个简单的tuxedo环境了。</p>
<p> <span id="more-1168"></span><br />
<h4>官方的小写变大写例子</h4>
<div>
<pre>Example:
#       APPDIR=&quot;<span style="color: #8b0000">/usr/tuxedo/simpapp</span>&quot;
#       TUXCONFIG=&quot;<span style="color: #8b0000">/usr/tuxedo/simpapp/tuxconfig</span>&quot;
#       TUXDIR=&quot;<span style="color: #8b0000">/usr/tuxedo</span>&quot;

&lt;machine name&gt; LMID=simple #machine name需要修改为自己的主机名
#Example:
#beatux     LMID=simple
*GROUPS
GROUP1
    LMID=simple GRPNO=1 OPENINFO=NONE
*SERVERS
DEFAULT:
        CLOPT=&quot;<span style="color: #8b0000">-A</span>&quot;
simpserv    SRVGRP=GROUP1 SRVID=1
*SERVICES
TOUPPER</pre>
</div>
<h4>配置文件的各个部分</h4>
<p>1、RESOURCES：设置域范围参数（必须）</p>
<p>RESOURCES小节是一个必须存在的小节，并且必须是配置文件中的第一个小节。本节包括如下信息：</p>
<p>• 共享内存的地址（IPCKEY）<br />
  <br />• 启动和关闭服务程序的管理点（MASTER） </p>
<p>• 访问应用的用户控制（UID、GID和PERM） </p>
<p>• 本应用的安全级别（SECURITY、AUTHSVC） </p>
<p>• 应用中各进程的IPC限制，服务器进程的数量，以及提供的服务数（MAXACCESSERS、MAXSERVERS、MAXSERVICES） </p>
<p>• 应用结构（MODEL），表明是单机器应用还是多机器应用 </p>
<p>• 是否使用服务器负载均衡（LDBAL） </p>
<p>• 缓冲区类型和子类型的最大数目（MAXBUFTYPE、MAXBUFSTYPE） </p>
<p>• 公告牌健全扫描（sanity scans）的时间间隔（SCANUNIT、SANITYSCAN） </p>
<p>• 服务请求的超时值（BLOCKTIME） </p>
<p>• 并发会话最大数目（MAXCONV） </p>
<p>• 主动通知方法（NOTIFY、USIGNAL）</p>
<p>2、MACHINES：配置机器（必须）</p>
<p>应用中的每个机器必须在配置文件的MACHINES小节中有一个入口项，并且该小节必须是配置文件的第二个小节。MACHINES小节中包含应用中每个机器的如下信息：</p>
<p>• 机器地址到逻辑标识（LMID）的映射<br />
  <br />• 配置文件的位置（TUXCONFIG） </p>
<p>• BEA TUXEDO软件的安装位置（TUXDIR） </p>
<p>• 应用服务器的位置（APPDIR） </p>
<p>• 应用日志文件的位置（ULOGPFX） </p>
<p>• 环境文件的位置（ENVFILE）</p>
<p>MACHINES小节中必需的几个参数是LMID、TUXCONFIG、TUXDIR和APPDIR</p>
<p>3、GROUPS：配置组信息（必须） </p>
<p>通过GROUPS小节可以指定从逻辑上分组的服务器集，这些服务器组以后可被用来访问资源管理器（resource managers）,并且便于服务器组迁移。配置文件的GROUPS小节包含对服务器组的定义。<strong>你必须为有应用服务器运行其上的机器定义至少一个服务器组</strong>。</p>
<p>对于无事务、非分布式系统，组非常简单，只需定义组名到组号的基本映射及各组的逻辑机器即可。此外还有更多灵活选项以支持分布式的带事务的系统。</p>
<p>组名是GROUPS小节入口项的基础，它是一个字母数字混合名称，通过它来识别一个组。<strong>一个组必须有一个唯一的组号（GRPNO），并且必须位于一个逻辑机器（LMID）上</strong>，LMID也是必须的。</p>
<p>4、SERVERS：配置服务器（可选）</p>
<p>配置文件的SERVERS小节包含某个服务器进程的信息。虽然本小节并非必需，但是一个配置文件中没有本小节的应用将没有应用服务器，因此将没有实际功能。本小节的每个入口项代表一个要在应用中被启动的服务器进程，包含如下信息：</p>
<p>• 一个服务器名称、组别以及数字标识（SRVGRP、SRVID）<br />
  <br />• 命令行选项（CLOPT） </p>
<p>• 执行服务器启动顺序和启动个数的参数（SEQUENCE、MIN、MAX） </p>
<p>• 一个服务器专用的环境文件（ENVFILE） </p>
<p>• 与服务器队列有关的信息（RQADDR、RQPERM、REPLYQ、RPPERM） </p>
<p>• 重启动信息（RESTART、RCMD、MAXGEN、GRACE） </p>
<p>• 服务器被指定为一个会话服务器（CONV） </p>
<p>• 重载系统范围的共享内存访问设置（SYSTEM_ACCESS）</p>
<p>5、SERVICES：配置服务（可选）</p>
<p>通过配置文件中的SERVICES小节可以指定BEA TUXEDO服务的信息。这些信息对于无事务、非分布式应用相对简单。SERVICES小节包含下面一些信息：<br />
  <br />• 负载均衡信息（SRVGRP） </p>
<p>• 给服务赋予优先级 </p>
<p>• 为不同的服务器组指定不同的服务参数 </p>
<p>• 缓冲区类型检查信息（BUFTYPE）</p>
<p>6、ROUTING：配置路由（可选）</p>
<p>UBBCONFIG文件的ROUTING小节允许对在SERVICES小节中命名的路由标准（routing criteria）进行全面的定义（针对BEA TUXEDO数据依赖性路由）。</p>
<p>7、NETGROUPS/NETWORK：配置网络信息</p>
<p>UBBCONFIG文件的NETGROUPS小节描述在在局域网环境下应用可用的网络组。对于网络组的个数没有限制，每个网络组可能被分配一对机器。一个网络组不同网络成员之间采用的通讯方法由优先级机制（NETPRIO）决定。 </p>
<p>每个LMID都必须是缺省网络组（DEFAULTNET）的成员，这个组的网络组号（即NETGRPNO）必须为零。不过可以更改DEFAULTNET的缺省优先级。</p>
<p>#NADDR指定网络连接的接入点。 </p>
<p>#NLSADDR则指定tlisten的接入点。 </p>
<p>#BRIDGE则指TCP连接所用的设备文件。</p>
<h4>MP的例子</h4>
<p>下面这个是实际用到的例子，group、servers、services和GWTDOMAIN都是分布在两台机器上。</p>
<div>
<pre>#ident	&quot;<span style="color: #8b0000">@(#) apps/simpapp/ubbSITE1	$Revision: 1.3 $</span>&quot;

#Skeleton UBBCONFIG file <span style="color: #0000ff">for</span> the TUXEDO SITE1 Application.
#Replace the &lt;bracketed&gt; items with the appropriate values.

*RESOURCES
IPCKEY		230399

DOMAINID	domainID
MASTER		SITE1,SITE2
MAXACCESSERS 100
MAXSERVERS	60
MAXSERVICES	60
<strong><font color="#ff0000">MODEL		MP</font></strong>
<strong><font color="#ff0000">OPTIONS		LAN</font></strong>
LDBAL		Y

*MACHINES
&quot;<span style="color: #8b0000">machine name1</span>&quot; LMID=SITE1
		APPDIR=&quot;<span style="color: #8b0000">C:\installroot</span>&quot;
		TUXCONFIG=&quot;<span style="color: #8b0000">C:\installroot\tuxconfig</span>&quot;
		TUXDIR=&quot;<span style="color: #8b0000">C:\installroot\oracle\tuxedo11gR1</span>&quot;
		MAXWSCLIENTS=20

&quot;<font color="#8b0000">machine name2</font>&quot; LMID=SITE2
		APPDIR=&quot;<span style="color: #8b0000">c:\installroot</span>&quot;
		TUXCONFIG=&quot;<span style="color: #8b0000">c:\installroot\tuxconfig</span>&quot;
		TUXDIR=&quot;<span style="color: #8b0000">C:\installroot\oracle\tuxedo11gR1</span>&quot;
		MAXWSCLIENTS=20

*NETWORK
SITE1
		NADDR=&quot;<span style="color: #8b0000">//IP1:9991</span>&quot;
		NLSADDR=&quot;<span style="color: #8b0000">//IP1:9999</span>&quot;

SITE2
		NADDR=&quot;<span style="color: #8b0000">//IP2:9991</span>&quot;
		NLSADDR=&quot;<span style="color: #8b0000">//IP2:9999</span>&quot;

*GROUPS
BSGRP1   LMID=SITE1 GRPNO=1
WSGRP1   LMID=SITE1 GRPNO=2
LDMGRP  LMID=SITE1 GRPNO=3
LGWGRP1 LMID=SITE1 GRPNO=4
JSLGRP1  LMID=SITE1 GRPNO = 5
JREPGRP1 LMID=SITE1 GRPNO = 6

BSGRP2   LMID=SITE2 GRPNO=10
WSGRP2   LMID=SITE2 GRPNO=20
LDMGRP2  LMID=SITE2 GRPNO=30
LGWGRP2 LMID=SITE2 GRPNO=40
JSLGRP2  LMID=SITE2 GRPNO = 50
JREPGRP2 LMID=SITE2 GRPNO = 60

*SERVERS
DEFAULT:
		CLOPT=&quot;<span style="color: #8b0000">-A</span>&quot;
yktfront SRVGRP=BSGRP1 SRVID=51
	CLOPT=&quot;<span style="color: #8b0000">-A -- -ws C:installroot\wsclient <a href="http://ip:port/webservice/services/CommWebService">http://ip:port/webservice/services/CommWebService</a> -cics WZMIB cicsuser cicsuser</span>&quot;
		CLOPT=&quot;<span style="color: #8b0000">-A</span>&quot;
yktfront SRVGRP=BSGRP2 SRVID=52
	CLOPT=&quot;<span style="color: #8b0000">-A -- -ws c:installroot\wsclient <a href="http://IP:port/webservice/services/CommWebService">http://IP:port/webservice/services/CommWebService</a> -cics WZMIB cicsuser cicsuser</span>&quot;

WSL
	SRVID=61
	SRVGRP=WSGRP1
	RESTART=Y
	MAXGEN=10
	GRACE=3600
	CLOPT=&quot;<span style="color: #8b0000">-A -- -n //IP1:5000 -m 2 -M 10 -x 5 -c 1024 -w WSH</span>&quot;

WSL
	SRVID=62
	SRVGRP=WSGRP2
	RESTART=Y
	MAXGEN=10
	GRACE=3600
	CLOPT=&quot;<span style="color: #8b0000">-A -- -n //IP2:5000 -m 2 -M 10 -x 5 -c 1024 -w WSH</span>&quot;

JSL SRVGRP=JSLGRP1 SRVID=63 CLOPT=&quot;<span style="color: #8b0000">-A -- -n //IP1:6000 -M 10 -x 10 -m 2</span>&quot;
JREPSVR SRVGRP=JREPGRP1 SRVID=64	CLOPT=&quot;<span style="color: #8b0000">-A -- -W -P C:\installroot\jrepository</span>&quot;	

JSL SRVGRP=JSLGRP2 SRVID=65 CLOPT=&quot;<span style="color: #8b0000">-A -- -n //IP2:6000 -M 10 -x 10 -m 2</span>&quot;
JREPSVR SRVGRP=JREPGRP2 SRVID=66	CLOPT=&quot;<span style="color: #8b0000">-A -- <strong><font color="#ff0000">这里没有-W参数</font></strong>-P C:\installroot\jrepository</span>&quot;

DMADM	SRVGRP=LDMGRP	SRVID=71 REPLYQ=N
GWADM	SRVGRP=LGWGRP1	SRVID=72 REPLYQ=N
GWTDOMAIN SRVGRP=LGWGRP1 SRVID=73 REPLYQ=Y
GWADM	SRVGRP=LGWGRP2	SRVID=75 REPLYQ=N
GWTDOMAIN SRVGRP=LGWGRP2 SRVID=76 REPLYQ=Y

*SERVICES
serviceProduct</pre>
</div>
<p>要点如红色加粗部分，另外DMADM只能有一个，上面概念里也说了。</p>
<h4>DM config配置</h4>
<p>要域间调用，还需要DM配置</p>
<div>
<pre>*DM_LOCAL
#####一般建议将ACCESSPOINTID配置成与前面的名字相同,不是必须的
#####另外,主动连接端建议开启onstartup连接策略
#####为了让两个DOMAIN之间通讯，DOMAIN名字必须一一对应，所以配置时，名字需要全局考虑，避免重名
DOM1	GWGRP=LGWGRP1	TYPE=TDOMAIN	ACCESSPOINTID=&quot;<span style="color: #8b0000">DOM1</span>&quot; BLOCKTIME=30	CONNECTION_POLICY=ON_STARTUP
DOM2	GWGRP=LGWGRP2	TYPE=TDOMAIN	ACCESSPOINTID=&quot;<span style="color: #8b0000">DOM2</span>&quot; BLOCKTIME=30	CONNECTION_POLICY=ON_STARTUP
#############################################################################################

*DM_REMOTE
WZYKT	TYPE=TDOMAIN	DOMAINID=&quot;<span style="color: #8b0000">WZYKT</span>&quot;

*DM_TDOMAIN
YKTDOM73	NWADDR=&quot;<span style="color: #8b0000">//IP1:9990</span>&quot;
YKTDOM74	NWADDR=&quot;<span style="color: #8b0000">//IP2:9990</span>&quot;
WZYKT	NWADDR=&quot;<span style="color: #8b0000">//IP REMOTE:9990</span>&quot; CONNECTION_POLICY=ON_STARTUP

*DM_EXPORT
serviceProduct 	LDOM=DOM1	RNAME=&quot;<span style="color: #8b0000">自定义名称，如abc123</span>&quot;
#####  以下信息必须添加,否则WZYKT只能通过DOM1访问abc123服务  ######
serviceProduct	LDOM=DOM2	RNAME=&quot;<span style="color: #8b0000">abc123</span>&quot;
#########################################################################

*DM_IMPORT
YSCENTER	RDOM=WZYKT LDOM=DOM1 RNAME=&quot;<span style="color: #8b0000">YSCENTER</span>&quot;
#####  以下信息必须添加,否则只有DOM1才能访问到WZYKT上的YSCENTER服务  ######
YSCENTER	RDOM=WZYKT LDOM=DOM2 RNAME=&quot;<span style="color: #8b0000">YSCENTER</span>&quot;
###############################################################################</pre>
</div>
<p></p>
<h4>编译文件，启动操作</h4>
<p>在SITE1上执行tmloadcf ubbconfig命令</p>
<p>在SITE1和2上执行dmloadcf dmconfig命令</p>
<p>确定SITE1、2上tlisten已经监听9999端口，否则tlisten –l //NLSADDR：port</p>
<p>确定两个config目录下tlisten.pw里密码相同，否则用tlistenpw命令添加一条</p>
<h4>最后</h4>
<p>其它深入部分以后遇到了再写</p>
<hr /><small>  Copyright &copy; 2008 This feed is for personal, non-commercial use only<br />
<a href=www.hashei.com >聚沙成塔-小哈的记事薄</a> by hashei 
如果喜欢，欢迎订阅<a href=feed.hashei.com >feed.hashei.com</a><br />
Digital Fingerprint:
 10f920a9f2bae51c3c73c4f5fb50a949</small>]]></content:encoded>
			<wfw:commentRss>http://www.hashei.me/2011/12/tuxedo_mp_configuration.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>官方JRockit JVM调优文档</title>
		<link>http://www.hashei.me/2009/09/weblogic_profiling_and_performance_tuning.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=weblogic_profiling_and_performance_tuning</link>
		<comments>http://www.hashei.me/2009/09/weblogic_profiling_and_performance_tuning.html#comments</comments>
		<pubDate>Mon, 07 Sep 2009 00:38:51 +0000</pubDate>
		<dc:creator>hashei</dc:creator>
				<category><![CDATA[中间件]]></category>
		<category><![CDATA[jrockit]]></category>
		<category><![CDATA[weblogic]]></category>
		<category><![CDATA[性能优化]]></category>

		<guid isPermaLink="false">http://www.hashei.me/2009/09/weblogic_profiling_and_performance_tuning.html</guid>
		<description><![CDATA[转自BEA，原文链接已经无法访问，文中的许多链接也更改过地址，我把能找到的都重新做了连接。以前一直以为Jrockit和Sun的JVM配置差不多，看了这篇文章和最后参考资料中的信息，发现区别不是一点点，很多常用参数的使用都不一样。Jrockit的自动化设置应该说做的不错，在WebLogic上我很少更改它的默认配置（除了堆最大最小值），不过不影响这篇文章存在的价值。
摘要
 本文的目的是以清单的方式提供BEA JRockit JVM的调优信息。从深奥的命令行选项到迭代性能测试，本文涵盖了许多方面。大部分数据都是我与用户合作过程中收集的。您要是也有什么技巧的话，请告诉我，在本文的下一版中，我会尝试将它们添加进去。 
 具体的产品版本信息都已在适当的地方列出；但是，本文所提供的通用指南适用于JRockit的大多数版本。每个版本的JRockit都增加了新的设置和优化，所以请查看 发行说明 和 JRockit产品中心。 
验证当前的JRockit环境
 首先需要确定您的运行时应用程序服务器所使用的JRockit的版本。为此，可以查看相应应用程序服务器的日志文件。也可以使用适当的脚本设置系统环境，然后执行java &#8211;version命令来确定JRockit的版本。 
 接着，收集当前JVM标志，开发和/或生产阶段需要用到它们：
-server -Xms1024m -Xmx1536m -Xverboselog:gc.log -Xverbose:memory-Xgcprio:throughput
 这将告诉您当前JRockit实例的配置情况。 
确定应用程序的目标
 确定应用程序的目标是什么。是&#8220;响应快&#8221;还是&#8220;性能高&#8221;？根据目标的不同，需要设置不同的垃圾收集算法。 
 例如，如果应用程序的目标是实现高性能，则确保设置了Dynamic Garbage Collector &#34;-Xgcprio:throughput&#34; 选项。如果目标是响应时间短，那么需要将-Xgcprio:pausetime -Xpausetarget=XXX&#8217;中的pausetarget设置为最佳值。有关更多细节，请查看JRockit 调优文档。 
收集故障诊断数据
 如果JVM性能有问题，那么最好是先收集一些分析数据。该工作可以由团队中有相关经验的人员来完成，您也可以将这些信息发送给BEA Support做进一步分析。 
 首先，出现问题时需要收集大约10分钟的运行时JRockit Recording（JRA)数据。可以使用jrcmd.sh实用工具或JRockit Mission Control（JRMC）完成此操作。请阅读&#8220;性能测试期间的JRCMD/JRA&#8221;和&#8220;JRockit Mission Control&#8221;两节的内容。有关详细信息，请参阅 JRockit Mission Control文档。Latency Analysis一节提供许多有价值的内容，我们可以从中了解任何潜在的延迟问题（在JRockit中需要一个许可证就可以使用它）。 
 然后，需要收集问题发生时的一些详细日志。方法是在启动服务器实例的时候在JVM命令行输入以下参数：
-Xverboselog:perTestGC.log-Xverbose:opt,memory,gcpause,memdbg,compaction,gc,license-Xverbosetimestamp -Xgcreport
 这样会将有价值的分析数据收集到刚才配置的perTestGC.log文件中。团队成员和/或BEA Support可以对这些数据进行分析。 
 最后一点：通常，应用程序不会请求执行垃圾收集（也就是在应用程序代码中调用System.gc()）。但如果您怀疑它有问题，那么可以在启动服务器实例的时候，在Java命令行使用-XXnoSystemGC参数来禁用它。 
 现在，我将介绍如何通过迭代性能测试方法解决这些问题。 

迭代性能测试方案及其方法
 完成初始数据的收集和分析后，我们可以通过迭代方法来调优JVM。此处介绍的测试方案是在JRockit JVM层执行迭代调优的通用方法，可以找到哪些设置可能有益于特定应用程序。假定您有测量性能结果的方法；然后，可以将它们与&#8220;基准&#8221;（您应该已经有了） [...]]]></description>
			<content:encoded><![CDATA[<p style="text-indent: 24pt">转自BEA，原文链接已经无法访问，文中的许多链接也更改过地址，我把能找到的都重新做了连接。以前一直以为Jrockit和Sun的JVM配置差不多，看了这篇文章和最后参考资料中的信息，发现区别不是一点点，很多常用参数的使用都不一样。Jrockit的自动化设置应该说做的不错，在WebLogic上我很少更改它的默认配置（除了堆最大最小值），不过不影响这篇文章存在的价值。</p>
<h5>摘要</h5>
<p> 本文的目的是以清单的方式提供BEA JRockit JVM的调优信息。从深奥的命令行选项到迭代性能测试，本文涵盖了许多方面。大部分数据都是我与用户合作过程中收集的。您要是也有什么技巧的话，请告诉我，在本文的下一版中，我会尝试将它们添加进去。 </p>
<p> 具体的产品版本信息都已在适当的地方列出；但是，本文所提供的通用指南适用于JRockit的大多数版本。每个版本的JRockit都增加了新的设置和优化，所以请查看 <a title="Jrockit发行说明" href="http://download.oracle.com/docs/cd/E13188_01/jrockit/jrdocs/index.html">发行说明</a> 和 <a title="JRockit产品中心" href="http://download.oracle.com/docs/cd/E13188_01/jrockit/webdocs/index.html">JRockit产品中心</a>。 </p>
<h5>验证当前的JRockit环境</h5>
<p> 首先需要确定您的运行时应用程序服务器所使用的JRockit的版本。为此，可以查看相应应用程序服务器的日志文件。也可以使用适当的脚本设置系统环境，然后执行java &#8211;version命令来确定JRockit的版本。 </p>
<p> 接着，收集当前JVM标志，开发和/或生产阶段需要用到它们：</p>
<pre>-server -Xms1024m -Xmx1536m -Xverboselog:gc.log -Xverbose:memory-Xgcprio:throughput</pre>
<p> 这将告诉您当前JRockit实例的配置情况。 </p>
<h5>确定应用程序的目标</h5>
<p> 确定应用程序的目标是什么。是&#8220;响应快&#8221;还是&#8220;性能高&#8221;？根据目标的不同，需要设置不同的垃圾收集算法。 </p>
<p> 例如，如果应用程序的目标是实现高性能，则确保设置了Dynamic Garbage Collector &quot;-Xgcprio:throughput&quot; 选项。如果目标是响应时间短，那么需要将-Xgcprio:pausetime -Xpausetarget=XXX&#8217;中的pausetarget设置为最佳值。有关更多细节，请查看JRockit <a href="http://download.oracle.com/docs/cd/E13188_01/jrockit/geninfo/diagnos/part_02.html">调优文档</a>。 </p>
<h5>收集故障诊断数据</h5>
<p> 如果JVM性能有问题，那么最好是先收集一些分析数据。该工作可以由团队中有相关经验的人员来完成，您也可以将这些信息发送给BEA Support做进一步分析。 </p>
<p> 首先，出现问题时需要收集大约10分钟的运行时JRockit Recording（JRA)数据。可以使用jrcmd.sh实用工具或<a title="JRMC" href="http://download.oracle.com/docs/cd/E13188_01/jrockit/geninfo/diagnos/intromiscon.html">JRockit Mission Control</a>（JRMC）完成此操作。请阅读&#8220;性能测试期间的JRCMD/JRA&#8221;和&#8220;JRockit Mission Control&#8221;两节的内容。有关详细信息，请参阅 <a href="http://download.oracle.com/docs/cd/E13188_01/jrockit/tools/index.html">JRockit Mission Control文档</a>。Latency Analysis一节提供许多有价值的内容，我们可以从中了解任何潜在的延迟问题（在JRockit中需要一个许可证就可以使用它）。 </p>
<p> 然后，需要收集问题发生时的一些详细日志。方法是在启动服务器实例的时候在JVM命令行输入以下参数：</p>
<pre>-Xverboselog:perTestGC.log-Xverbose:opt,memory,gcpause,memdbg,compaction,gc,license-Xverbosetimestamp -Xgcreport</pre>
<p> 这样会将有价值的分析数据收集到刚才配置的perTestGC.log文件中。团队成员和/或BEA Support可以对这些数据进行分析。 </p>
<p> 最后一点：通常，应用程序不会请求执行垃圾收集（也就是在应用程序代码中调用System.gc()）。但如果您怀疑它有问题，那么可以在启动服务器实例的时候，在Java命令行使用-XXnoSystemGC参数来禁用它。 </p>
<p> 现在，我将介绍如何通过迭代性能测试方法解决这些问题。 </p>
<p><span id="more-660"></span></p>
<h5>迭代性能测试方案及其方法</h5>
<p> 完成初始数据的收集和分析后，我们可以通过迭代方法来调优JVM。此处介绍的测试方案是在JRockit JVM层执行迭代调优的通用方法，可以找到哪些设置可能有益于特定应用程序。假定您有测量性能结果的方法；然后，可以将它们与&#8220;基准&#8221;（您应该已经有了） 进行比较。 </p>
<h5>测试1：线程本地区域大小和大对象大小</h5>
<p> 在本测试中，我们将查看线程本地区域大小。这很重要，因为如果这些标志的默认设置对于应用程序不是最佳的（多数情况下是这样），那么就会造成堆锁定，这将对性能产生影响。将大部分对象限制在一定范围内对整体性能有益。 </p>
<ul>
<li>分析收集的JRA Recording数据</li>
</ul>
<ul>
<li>分析结果，查看-XXtlasize和-XXlargeobjectlimit是否需要调优（请记住，对于多数应用程序，根据eDocs，线程本地区域大小应该至少是大对象大小的两倍）。这些内容位于JRA Recording首页的右上方。请查看下面关于 <a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp1020097">tlaSize</a> 和<a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp1008230">largeObjectLimit</a> 的信息。在JRockit R27.3之前的多数情况下，这些都不必调优。</li>
</ul>
<p><strong>注意：</strong>为了确保在稳定状态下获取配置文件和度量，应用程序需要有足够的热启动时间。要在性能分析过程中检查是否符要求，可以查看JRA Recording中的优化标签，其中性能分析前后的优化数量和优化时间应该大致（理论上应该是准确地）相等。 </p>
<h5>测试2：锁性能分析</h5>
<p> 现在让我们看一下锁性能分析，它会显示在应用程序中是否有过多的锁定。如果确实如此的话，那么将对整体性能造成影响。 </p>
<ul>
<li>运行测试（启用-Djrockit.lockprofiling），分析这些结果。确定没有通过JVM启用的日志。该标志大概会占用5%到10%的系统开销，一个单独的测试将收集该数据，此时性能被忽略，唯一做完的分析是锁定分析。</li>
</ul>
<pre>-server -Xms1536m -Xmx1536m <strong>-Djrockit.lockprofiling</strong></pre>
<ul>
<li>在相同测试中，使用jrcmd.sh实用工具或JRockit Mission Control（JRMC）热启动应用程序后，运行10分钟的JRA Recording。有关如何使用该工具的信息，请参见电子文档。 </li>
<li>使用top和iostat选项监控操作系统，如果需要的话还可使用ctrhandler.act文件指定的信息执行线程转储。 </li>
<li>分析结果。</li>
</ul>
<h5>测试3：调优tlaSize和largeObjectLimit</h5>
<p> 在这个测试中，我们将根据前面测试的结果调优线程本地区域大小和大对象限制。 </p>
<ul>
<li>确定JVM未启用日志。将 &#8211;XxtlaSize和-XXlargeObjectLimit的值设置较高一点可能会有所帮助。但是，要验证和比较这点则需要需要长时间运行测试。对于 R27.2，将preferredSize设置为16k可能有所帮助。您可以查看关于这一问题的 <a href="http://edocs.bea.com/jrockit/geninfo/conftune/issues.html#wp999214">详细信息</a>。为此要，更改TLA设置并使用与测试1相同的Java命令行选项重新运行测试；增加-XXtlaSize和-XXlargeobjectlimit的TLA值设置。相关信息，请<a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp1020097">参见 tlaSize</a>。<strong>注意：</strong>在R27.3之前，提高性能通常不需要调优这些标志。事实上，过度调优这些标志很可能带来负面影响。 </li>
<li>在相同测试中，使用jrcmd.sh实用工具或JRockit Mission Control（JRMC）热启动应用程序后，运行10分钟的JRA Recording。关于如何使用该工具的信息，请参见电子文档。</li>
</ul>
<ul>
<li>使用top和iostat选项监控操作系统，如果需要的话还可使用ctrhandler.act文件指定的信息执行线程转储。</li>
</ul>
<ul>
<li>分析结果。</li>
</ul>
<h5>测试4：调优垃圾收集算法</h5>
<p> 本节测试的目的是运行各种不同的垃圾收集算法设置，并查看哪种设置对于应用程序最佳。关于 <a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp999595">-XXsetGC标志</a> 的详细令牌，请阅读以下内容。JRockit将以调优的nursery大小运行并移除-Xgcprio:throughput标志。该 throughput选项将在这些双版本的垃圾收集器之间自动切换，但进行直接的选择可能带来一些额外的性能上的好处。Nursery调优的目的是使被提 升的对象保持较少的数量，因为这是nursery收集中代价高的部分。通过增加和减小nursery的大小对其调优。nursery的大小主要依赖于对象 生存的时间，因为如果它们生存着，则在YC期间会得到提升。运行jrcmd &lt;PID&gt;版本查看哪个当前垃圾收集器策略是活动的。 </p>
<ul>
<li>a. 测试4-1：</li>
</ul>
<ul>
<ul>
<li>使用&#8211;XxsetGC垃圾收集算法设置运行测试。该测试将设置垃圾收集选项为<strong>单倍行距</strong>加上<strong>并行</strong>标记算法和<strong>并行</strong>扫描算法；还要手动调优nursery大小：</li>
</ul>
</ul>
<pre>-server -Xms1536m -Xmx1536m -Xns:384m&#160; -Xverboselog:perTestGC.log-Xverbose:opt,memory,gcpause,memdbg,compaction,gc,license-Xverbosetimestamp -Xgcreport -XXnoSystemGC -XXsetGC:<strong>singleparpar</strong></pre>
<ul>
<ul>
<li>在相同测试中，使用jrcmd.sh实用工具或JRockit Mission Control（JRMC）热启动应用程序后，运行10分钟的JRA Recording。关于如何使用该工具的信息，请参见电子文档。 </li>
<li>使用top和iostat选项监控操作系统，如果需要的话还可使用ctrhandler.act文件指定的信息执行线程转储。 </li>
<li>分析结果。</li>
</ul>
</ul>
<ul>
<li>b. 测试4-2：</li>
</ul>
<ul>
<ul>
<li>用 &#8211;XxsetGC运行一个使用垃圾收集算法集的测试。该测试将设置垃圾收集选项为<strong>分代</strong>的（双倍行距）加上<strong>并行</strong>标记算法和<strong>并行</strong>扫描算法；还要手动调优nursery大小：</li>
</ul>
</ul>
<pre>-server -Xms1536m -Xmx1536m -Xns:384m&#160; -Xverboselog:perTestGC.log</pre>
<pre>-Xverbose:opt,memory,gcpause,memdbg,compaction,gc,license</pre>
<pre>-Xverbosetimestamp -Xgcreport -XXnoSystemGC -XXsetGC:<strong>genparpar</strong></pre>
<ul>
<ul>
<li>在做这个测试的时候，使用jrcmd.sh实用工具或JRockit Mission Control (JRMC)收集应用程序热启动并运行后10分钟的JRA Recording。关于如何使用该工具，请参见eDocs。 </li>
<li>使用top、iostat，需要的话，还可用带有ctrhandler.act文件给定的信息的线程转储来监控正在运行的系统。 </li>
<li>分析结果。</li>
</ul>
</ul>
<ul>
<li>c. 测试4-3：根据前面的-XXsetGC:genparpar测试向上或向下调优nursery大小。 </li>
<li>d. 测试4-4：用-Xgc:gencon -Xns50m（和设为收集规格的日志）试试。 </li>
<li>e. 测试4-5：用-Xgc:parallel -XXcompactratio:1（和设为收集规格的日志）试试。</li>
</ul>
<h5>测试5：调优垃圾收集线程</h5>
<p> 本测试的目的是查看gcthreads标志设置对整体性能的影响。 </p>
<ul>
<li>根据前面的结果，调优-XXgcthreads标志为实际物理CPU的数量并重新运行测试(由于这些值默认是基于机器上核心和硬件线程的数量，所以这应该是自动调优的)。您可以查看在&#8220;收集故障诊断数据&#8221;一节收集的详细输出日志来对其验证。更多细节请参见 <a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp1023988">gcThreads flag</a>。</li>
</ul>
<h5>测试6：调优锁争用</h5>
<p> 如果在胖锁（fat lock）上存在锁争用，则可以用-XXdisableFatSpin禁止它们，或者用-Djrockit.useAdaptiveFatSpin= true让JRockit自适应地禁止它们。当测试2启用-Djrockit.lockprofiling时，可以通过在JRA中查看那个标签来确定这一 点。更多细节，请参见<a href="http://e-docs.bea.com/jrockit/geninfo/diagnos/thread_basics.html#wp1091168">locking in JRockit</a>。 </p>
<h5>测试7：调优Xeon硬件</h5>
<p> 如果运行在Xeon硬件之上，那么可以添加-XXallocPrefetch和-XXallocRedoPrefetch，它们与TLA和LargeObjectLimit一起将有助于减少内存分配的开销。有关详细信息，请参见 <a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp1023657">allocPrefetch标志</a>。为了得到最佳的结果，您可能会在BIOS中<strong>禁用</strong>硬件预取指令。虽然操作方式取决于BIOS的牌子，但参数的名称通常都为&#8220;Hardware Prefetcher&#8221;、&#8220;Adjacent Sector Prefetcher&#8221;、&#8220;Adjacent Cache Line Prefetcher&#8221;等。更多信息请参见 <a href="http://www.intel.com/cd/ids/developer/asmo-na/eng/dc/xeon/298229.htm?page=4">Intel on this subject</a>。 </p>
<h5>测试8：将堆放入largePage</h5>
<p> 这会将堆锁入内存，使操作系统不能将其交换出来。更多信息请参见 <a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp1019120">largePages标志</a>，有关Linux操作系统端配置的更多信息还可以参考 <a href="http://dev2dev.bea.com.cn/techdoc/2008/4/jrockit-tuning.html.html?page=3#linux">在Linux上配置-XXlargePages</a> 一节。在JRockit R27版中，该选项的名称为-XlargePages。根据前面的结果，调优-XlargePages标志可能有所帮助，但可能也没有。使用该标志运行测试，查看结果否对整体性能有帮助。 </p>
<h5>测试9：用-XXaggressive标志测试</h5>
<p> 本节中的这些配置将使JVM高速运行并尽快达到稳定状态。为了实现此目标，JVM在启动时需要更多内部资源；但当目标一旦达成，它所需要的自适应优化将更少。我们推荐您为了那些单独工作的、运行时间长的、内存敏感的应用程序使用这个选项。更多细节请参见 <a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp999550">aggressive标志</a>。使用-XXaggressive标志运行测试，查看结果否对整体性能有帮助。 </p>
<h5>测试10：用-XX:+UseNewHashFunction标志测试</h5>
<p> 这个选项支持一个新的、更快的HashMap散列函数，它在Java 5.0 Update 8中引入，从R27.1.0开始也是BEA JRockit的一部分。这个散列函数能够通过改进的散列扩展提高性能而不改变HashMap中元素存放的顺序。更多细节请参见<a href="http://edocs.bea.com/jrockit/jrdocs/refman/optionXX.html#wp1028966">UseNewHashFunction标志</a>。使用这个新的-XX:+UseNewHashFunction运行测试，，查看结果否对整体性能有帮助。 </p>
<h5>测试11：将暗物质减到最少</h5>
<p> &#8220;暗物质&#8221;指被浪费的堆内存，它使堆成为许多碎片。了解如何最大程序地减少暗物质，以便当堆需要压缩时，整体吞吐量不受影响。请看以下选项： </p>
<ul>
<li>使用分代的垃圾收集器 (-Xgc:gencon or -Xgc:genpar)。在初始收集（nursery垃圾收集）期间，在nursery中被发现生存的对象被迁移到旧的一代。这样有好的副作用，当迁移对象时可以压缩它们。 </li>
<li>提高压缩比（-XXcompactionRatio=nn）。通过将对象迁移到压缩块中、消除它们之间的暗物质，压缩减少了暗物质。 </li>
<li>通 过-XXminBlockSize:&lt;memSize&gt;选项修改规范（将什么视为暗物质？）。堆上小于最小块大小的块视为暗物质。因此，通过 减小最小块大小，您最终减少了暗物质。但请注意，因为JRockit为了释放堆空间必须做更细密的搜索，所以垃圾收集的时间会更长。最小块大小默认为2 KB。</li>
</ul>
<h5>进一步测试：调优应用程序服务器层</h5>
<p> 最后，查看上述调优建议，调优WebLogic Server实例层。 </p>
<h5>结束语</h5>
<p> 本文提供的信息绝非一个完整的清单。但它会让您开始更好地理解和调优JRockit JVM层！ </p>
<h5>参考资料</h5>
<ul>
<li><a href="http://download.oracle.com/docs/cd/E13188_01/jrockit/geninfo/diagnos/part_02.html">JRockit调优文档</a> </li>
<li><a href="http://download.oracle.com/docs/cd/E13188_01/jrockit/jrdocs/refman/optionX.html">JRocikit参考文档：X Flags</a> </li>
<li><a href="http://download.oracle.com/docs/cd/E13188_01/jrockit/jrdocs/refman/optionXX.html">JRocikit参考文档：XX Flags</a> </li>
</ul>
<h5>附录</h5>
<p> 以下内容为正文引用过的额外信息。 </p>
<h5>性能测试期间的JRCMD/JRA</h5>
<p> 使用命令行或者基于JRockit Mission Control (JRMC) Eclipse的工具都能够执行JRA Recoding。我们可以使用JRMC连接到多个 JRockit JVM，收集JRA recording，查看JVM的实时数据，检测和排除内存泄漏，以及查看应用程序内的潜伏物（执行缓慢&#8220;点&#8221;）。有关如何运行JRockit Mission Control，请参见下一节。 </p>
<ul>
<li>下载 <a href="http://commerce.bea.com/downloadproduct.jsp?family=JRMC&amp;major=3.0&amp;minor=0&amp;delivery=1&amp;os=All&amp;intent=purchase">文档许可证</a>。 </li>
<li>将下载的license.bea文件添加到&lt;JROCKIT_HOME&gt;/jre目录中。这样，完整路径将如下所示：&lt;JROCKIT_HOME&gt;/jre/license.bea </li>
<li>运 行JRCMD如下：jrcmd.sh &lt;PID&gt; jrarecording filename=myrecording.xml time=600（该文件被写入本地目录或者指定的完整路径／文件名）或jrcmd.sh &lt;PID&gt; print_threads。 </li>
<li>使用脱机JRA工具分析最后得到的myrecording.xml.zip文件。通过在&lt;JROCKIT_HOME&gt;/bin中执行JRA binary，将该JRA工具放入此目录下。 </li>
<li>请查看 <a href="http://e-docs.bea.com/jrockit/geninfo/diagnos/ctrlbreakhndlr.html#wp1000350">JRCMD文档</a>。</li>
</ul>
<h5>JRockit Mission Control</h5>
<ul>
<li>使用JRockit将下列内容添加到WebLogic Instance的启动行中：java -Xmanagement:autodiscovery=true,ssl=false,authenticate=false,port=7091 </li>
<li>使用&lt;jrockit-install-directory&gt;/bin/jrmc.exe(sh)启动JRockit Mission Control </li>
<li>如有必要，将JR Mission Control的license.bea file文件添加到：&lt;JROCKIT_HOME&gt;/jre/license.bea </li>
<li>在Mission Control的帮助下，JRA Recordings、内存泄漏、潜伏物探查和监控能够全部在一处完成。</li>
</ul>
<h5>堆/线程的测试期快照</h5>
<ul>
<li>创建一个简单的、名称ctrhandler.act的文件并将其存放在&lt;JROCKIT_HOME&gt;/jre/bin/jrockit目录。 </li>
<li>执行线程转储命令时，例如，kill -3)，JRockit会查看此文件并执行命令列表。 </li>
<li>ctrlhandler.act文件应该包含以下内容：</li>
</ul>
<pre>#ctrlhander.act file located in the &lt;JROCKIT_HOME&gt;/jre/bin/jrockit directoryset_filename filename=./jrocket_control_breakoutput.txt append=truetimestampprint_threadstimestampversionprint_class_summaryprint_object_summary increaseonly=trueprint_threadsprint_threads nativestack=trueprint_utf8pooltimestampprint_memusagetimestampheap_diagnosticstimestamp# The following is optional and is another way to generate a JRArecordingjrarecording filename=./myjra.xml time=600</pre>
<h5><a name="linux"></a>在Linux上配置-XXlargePages</h5>
<p><strong>问题：</strong>为何使用largePages？ </p>
<p><strong>回答：</strong>使用largePages的优点是可以锁定堆内存，并且不适用页面交换（还可以减少IOWait和GC）。在实际内存中，访问堆中的对象明显变快了。因此，为了实现性能目标，largePages选项是一个理想的选择。 </p>
<ul>
<li>如果机器支持大页面，则cat /proc/meminfo的输出将如下所示：</li>
</ul>
<pre>HugePages_Total: xxxHugePages_Free:&#160; yyyHugepagesize:&#160;&#160;&#160; zzz KB</pre>
<p> 如果xxx为0，则没有分配任何大页面。 </p>
<ul>
<li>如果不为0，则需要使用CONFIG_HUGETLBFS(位于&#8220;File systems&#8221;下面)和CONFIG_HUGETLB_PAGE（当CONFIG_HUGETLBFS被选时，自动被选上）配置选项构建Linux kernel。 </li>
<li>接着，在Linux上分配大页。注意：只允许根用户分配大页面。
<ul>
<li>装载文件系统。JRockit使用hugepages文件系统，它驻留在内存中。这些步骤可以完成文件系统的安装。每次机器重启时都需要完成实际装载和chmod命令，或者也可以将其添加到一个/etc/rc.d/rc.local类型的文件：</li>
</ul>
</li>
</ul>
<pre>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mkdir -p&#160; /mnt/hugepages&#160;&#160;&#160;&#160;&#160;&#160;&#160; mount -t hugetlbfs nodev /mnt/hugepages&#160;&#160;&#160;&#160;&#160;&#160;&#160; chmod 777 /mnt/hugepages</pre>
<ul>
<ul>
<li>分配大页面。这是通过指定应该分配的内存数量来自动执行的。在分配过程中，这些面页将被保留起来，不能像普通页面那样使用。它们的分配和解除分配方式如下：</li>
</ul>
</ul>
<pre>echo 20 &gt; /proc/sys/vm/nr_hugepages</pre>
<p> 此处，数字20指应该保留的页面数量。要解除分配，可以将分配页面设置为0。（<strong>注意：</strong>请参见后面Q&amp;A部分以确定正确的数量。） </p>
<p> 如果并非所有请求的页面都被保留，那么可用内存就不够了。如果确要如此，内存很可能会有太多的碎片，那么我们的建议是重启机器。请注意，大页面不能被交换，所以一切都必须放在物理内存中。 </p>
<p> 在<strong>RHEL3</strong>上，该文件的名称为/proc/sys/vm/hugetlb_pool，所以可以使用以下命令执行：</p>
<pre>echo 500 &gt; /proc/sys/vm/hugetlb_pool</pre>
<p> 这里的数字500指请求的大小为多少MB，而不是页数。如果JRockit不能够直接消除临时的大页文件，请别忘记在执行之后进行消除。否则， 那些页在被释放之前将不可用。这对RedHat kernel build 2.4.18-e.25.smp适用，而2.4.18-e.12.smp却不行。 </p>
<p><strong>问题：</strong>如何确定发给/proc/sys/vm/nr_hugepages的正确数量呢？ </p>
<p><strong>回答：</strong>因为要将整个Java堆放入largePages，所以必须根据堆的大小和页面大小来确定。为/proc/sys/vm/nr_hugepages确定正确的数量就像下面的例子那样简单，信息如下：</p>
<pre>JVM Max Heap = 1536MB (1572864 KB approx)HPAGE_SIZE = 2 MB then  the value sent to /proc/sys/vm/nr_hugepages would be approximately 7.7.  (1572864 MB / 2 MB)</pre>
<p><strong>注意：</strong> </p>
<p> 尽管动态设置大页面的数量在理论上是可行的，但实践中并非如此。减少大页面的数量决不会有问题，但是增加大页面的数量就会产生问题。原因是，为了创建一个大页，Linux需要在内存中找到足够大的连续的区域。如果找不到，就不能创建大页面。 </p>
<p> 刚启动系统时，内存的碎片还不是很多，所以要找到足够大的连续的区域并不是问题。但机器运行时间一长，内存会产生更多的碎片。所以，如果要确保能够分配足够大的页面，就必须在启动刚完成时通过启动脚本或手动设置它们。</p>
<hr /><small>  Copyright &copy; 2008 This feed is for personal, non-commercial use only<br />
<a href=www.hashei.com >聚沙成塔-小哈的记事薄</a> by hashei 
如果喜欢，欢迎订阅<a href=feed.hashei.com >feed.hashei.com</a><br />
Digital Fingerprint:
 10f920a9f2bae51c3c73c4f5fb50a949</small>]]></content:encoded>
			<wfw:commentRss>http://www.hashei.me/2009/09/weblogic_profiling_and_performance_tuning.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebLogic9和10集群安装配置过程</title>
		<link>http://www.hashei.me/2009/09/weblogic-cluster-step-by-step.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=weblogic-cluster-step-by-step</link>
		<comments>http://www.hashei.me/2009/09/weblogic-cluster-step-by-step.html#comments</comments>
		<pubDate>Sun, 06 Sep 2009 14:54:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[weblogic]]></category>
		<category><![CDATA[中间件]]></category>
		<category><![CDATA[安装]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://www.hashei.me/2009/09/weblogic-cluster-step-by-step.html</guid>
		<description><![CDATA[weblogic的集群很早以前做过，当时写了一份文档，最近真好又有机会实验了Weblogic 10.3的集群配置，两相比较，同时对照着文档过了一遍，确定下文对weblogic9和10都适用。截了图也方便新手学习。]]></description>
			<content:encoded><![CDATA[<p>weblogic的集群很早以前做过，当时写了一份文档，最近真好又有机会实验了Weblogic 10.3的集群配置，两相比较，同时对照着文档过了一遍，确定下文对weblogic9和10都适用。截了图也方便新手学习。</p>
<h4>环境</h4>
<p>平台：两台Windows 2003 SP2（SP版本要一样），必须位于同一网段，并且必须是IP广播(UDP)可到达的</p>
<p>软件：Weblogic9.1</p>
<h4>拓扑</h4>
<p>在A机上建立一个Administrator Server，作为管理节点；在AB机上分别建立Managed Server，加入集群appCluster，作为应用程序的运行环境；在B机上分别建立Proxy Server，作为提供外部访问的服务地址。</p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td width="100" valign="top">机器</td>
<td width="100" valign="top">配置信息</td>
<td width="100" valign="top">角色</td>
<td width="100" valign="top">备注</td>
</tr>
<tr>
<td width="100" valign="top">app1</td>
<td width="100" valign="top">IP:*.*.*.* PORT:7001</td>
<td width="100" valign="top">AdminServer</td>
<td width="100" valign="top">管理服务器</td>
</tr>
<tr>
<td width="100" valign="top">app1</td>
<td width="100" valign="top">IP: *.*.*.*PORT:7002</td>
<td width="100" valign="top">Managed Server</td>
<td width="100" valign="top">受管服务器</td>
</tr>
<tr>
<td width="100" valign="top">app2</td>
<td width="100" valign="top">IP: *.*.*.*PORT:7002</td>
<td width="100" valign="top">Managed Server</td>
<td width="100" valign="top">受管服务器</td>
</tr>
<tr>
<td width="100" valign="top">app2</td>
<td width="100" valign="top">IP: *.*.*.*PORT:80</td>
<td width="100" valign="top">Proxy Server</td>
<td width="100" valign="top">代理服务器</td>
</tr>
</tbody>
</table>
<h4>安装过程</h4>
<p><strong>在机器A上</strong></p>
<h5>创建新的Domain</h5>
<p>选择“Tool- Configuration Wizard”，单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image002.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image002_thumb.jpg" border="0" alt="clip_image002" width="244" height="176" /></a></p>
<h5>选择安装域源</h5>
<p>选择安装“WebLogic Server”，单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image004.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image004_thumb.jpg" border="0" alt="clip_image004" width="244" height="176" /></a></p>
<h5>配置管理员用户名和密码</h5>
<p>输入Weblogic管理员管理服务器（AdminServer）的用户名和密码，在此以“weblogic”作用登录管理服务器的用户名和密码，单击“下一步”按钮</p>
<p><span id="more-659"></span></p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image006.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image006_thumb.jpg" border="0" alt="clip_image006" width="244" height="176" /></a></p>
<h5>配置域启动模式和JDK</h5>
<p>选择“生产模式”和“JRockit SDK”后，单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image008.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image008_thumb.jpg" border="0" alt="clip_image008" width="244" height="176" /></a></p>
<h5>选择是否自定义环境和服务设置</h5>
<p>选择“是”后，单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image010.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image010_thumb.jpg" border="0" alt="clip_image010" width="244" height="176" /></a></p>
<h5>配置管理服务器</h5>
<p>输入Administrator Server的名称，监听地址，监听端口，如果需要SSL支持的话可以在“SSL enabled”后面的复选取框上打勾，配置SSL监听端口，单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image012.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image012_thumb.jpg" border="0" alt="clip_image012" width="244" height="176" /></a></p>
<h5>配置受管理服务器（代理服务器实际上也是一个受管理服务器）</h5>
<p>输入Managed Server的名称，监听地址，监听端口（注意同一台机器的端口不要冲突），如果需要SSL支持的话，可以在“SSL enabled”复选框上打勾，配置SSL监听端口。可以配置多个Managed Server。单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image014.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image014_thumb.jpg" border="0" alt="clip_image014" width="244" height="176" /></a></p>
<h5>配置群集信息</h5>
<p>单击“切换显示”，再单击“添加”，输入Cluster的名称，Multicast address组播地址224.0.0.239 255.255.255.255，Cluster的组播地址和端口，Cluster地址可输可不输。单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image016.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image016_thumb.jpg" border="0" alt="clip_image016" width="244" height="176" /></a></p>
<h5>将“受管理服务器”添加到“集群”中</h5>
<p>选择左面列表中的app Managed Server，将其添加到右面的列表中，这里代理服务器不要添加到右边，单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image018.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image018_thumb.jpg" border="0" alt="clip_image018" width="244" height="176" /></a></p>
<h5>创建HTTP代理应用程序</h5>
<p>选中“为群集创建Http代理”，appCluster代理服务器选择前面没有加入appCluster的ProxyServer，单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image020.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image020_thumb.jpg" border="0" alt="clip_image020" width="244" height="176" /></a></p>
<h5>配置计算机</h5>
<p>新建AB所在物理服务器的主机名，端口默认为5556，此操作目的是生成Node manager配置，在wls10以后的版本中会自动添加node manager服务，9版本还要手动运行startNodeManager.cmd，或者手动添加到服务中去。单击“下一步”按钮</p>
<p><span style="color: #ff0000;">注：这里应该是在安装weblogic时候没有配置nodemanager的缘故，后续添加就需要运行<span><span style="color: #ff0000;">startNodeManager.cmd了</span></span></span></p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image022.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image022_thumb.jpg" border="0" alt="clip_image022" width="244" height="176" /></a></p>
<h5>检查Weblogic域</h5>
<p>在此检查前面所做的配置，如果没有问题单击“下一步”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image024.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image024_thumb.jpg" border="0" alt="clip_image024" width="244" height="176" /></a></p>
<h5>创建Weblogic域</h5>
<p>输入要创建的域名和位置，此处域名可输入为Clust_domain，输入完成后单击“创建”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image026.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image026_thumb.jpg" border="0" alt="clip_image026" width="244" height="176" /></a></p>
<h5>正在创建域</h5>
<p>创建无误后，单击“完成”按钮</p>
<p><a href="http://hashei.me/wp-content/uploads/2009/09/clip_image028.jpg"><img style="border-width: 0px;" src="http://hashei.me/wp-content/uploads/2009/09/clip_image028_thumb.jpg" border="0" alt="clip_image028" width="244" height="176" /></a></p>
<p><strong>机器B上</strong></p>
<p>按上述步骤再次执行一遍，务必保证所有配置一样，当然也可以将A机上的user_projects/domain目录下的Clust_domain目录直接复制到B上。</p>
<h4>后续配置（重要）</h4>
<p><strong>编辑口令文件</strong></p>
<p>在刚才创建的域目录下建立boot.properties文件，内容为：</p>
<p>username=weblogic  /*用户名</p>
<p>password=weblogic /*密码</p>
<p><span style="color: #ff0000;">注：Oracle WebLogic 10.3之后添加boot.properties后有时依旧会让你输入用户名密码，这时候需要在domain目录下的server/your server/下新建一个security目录，然后把boot.properties放入，再启动就会看到这个文件被加密并直接运行下去了。</span></p>
<p><strong>编辑hosts文件</strong></p>
<p>添加对方主机名和IP相对应信息，避免node manager之间通讯问题。</p>
<p><strong>同步集群信息（在AB上分别进行）</strong></p>
<p>否则在控制台“机器”里“监视”看不到版本、状态等信息，同时在日志里输出</p>
<blockquote><p>Could not execute command &#8221; get Version&#8221; on the nodemanager.Reason : &#8220;I/O error while reading domain dirctory</p>
<p>或者 Could not use user *** to access ……permission deny</p></blockquote>
<p><span style="color: #ff0000;">注：和AdminServer同一台机器上的可以不用执行，因为在同一个域内</span></p>
<p>打开WLST工具（程序-weblogic-tools里）</p>
<p>linux/unix环境下先运行</p>
<p>刚开始是offline状态，运行connect(&#8216;用户名&#8217;,'密码&#8217;,'url’）连接到服务器，</p>
<p>例如connect(&#8216;weblogic&#8217;,'weblogic&#8217;,'t3://ip:7001&#8242;)</p>
<p>你也可以通过connect(help)查看帮助</p>
<p><span style="color: #ff0000;">2010年5月6更新</span></p>
<p>这一说后续待完成，就过了10个月。</p>
<p>在执行完connect（）命令后，接着运行</p>
<blockquote>
<div id="_mcePaste">nmEnroll (&#8216;D:/weblogic/wlserver_10.3/common/nodema</div>
<div id="_mcePaste">nager&#8217;)</div>
</blockquote>
<p>注意斜杠方向，虽然是windows，但不是反斜杠</p>
<p>整个过程，粗体是我执行的</p>
<blockquote><p><strong>D:\weblogic\wlserver_10.3\server\bin&gt;setWLSEnv.cmd</strong></p>
<p>CLASSPATH=d:\weblogic\patch_wls1033\profiles\default\sys_manifest_classpath\webl</p>
<p>ogic_patch.jar;D:\Java\jrmc\lib\tools.jar;D:\weblogic\WLSERV~1.3\server\lib\webl</p>
<p>ogic_sp.jar;D:\weblogic\WLSERV~1.3\server\lib\weblogic.jar;d:\weblogic\modules\f</p>
<p>eatures\weblogic.server.modules_10.3.3.0.jar;D:\weblogic\WLSERV~1.3\server\lib\w</p>
<p>ebservices.jar;d:\weblogic\modules\ORGAPA~1.1/lib/ant-all.jar;d:\weblogic\module</p>
<p>s\NETSFA~1.0_1/lib/ant-contrib.jar;</p>
<p>PATH=d:\weblogic\patch_wls1033\profiles\default\native;D:\weblogic\WLSERV~1.3\se</p>
<p>rver\native\win\x64;D:\weblogic\WLSERV~1.3\server\bin;d:\weblogic\modules\ORGAPA</p>
<p>~1.1\bin;D:\Java\jrmc\jre\bin;D:\Java\jrmc\bin;C:\WINDOWS\system32;C:\WINDOWS;C:</p>
<p>\WINDOWS\System32\Wbem;D:\weblogic\WLSERV~1.3\server\native\win\x64\oci920_8</p>
<p>Your environment has been set.</p>
<p><strong>D:\weblogic\wlserver_10.3\server\bin&gt;java weblogic.WLST</strong></p>
<p>Initializing WebLogic Scripting Tool (WLST) &#8230;</p>
<p>Welcome to WebLogic Server Administration Scripting Shell</p>
<p>Type help() for help on available commands</p>
<p><strong>wls:/offline&gt; connect()</strong></p>
<p>Please enter your username [weblogic] :<strong>weblogic</strong></p>
<p>Please enter your password [welcome1] :</p>
<p>Please enter your server URL [t3://localhost:7001] :<strong>t3://192.168.1.32:7001</strong></p>
<p>Connecting to t3://192.168.1.32:7001 with userid weblogic &#8230;</p>
<p>Successfully connected to Admin Server &#8216;AdminServer&#8217; that belongs to domain &#8216;hbj</p>
<p>_domain&#8217;.</p>
<p>Warning: An insecure protocol was used to connect to the</p>
<p>server. To ensure on-the-wire security, the SSL port or</p>
<p>Admin port should be used instead.</p>
<p>wls:/hbj_domain/serverConfig&gt;</p>
<p>wls:/hbj_domain/serverConfig&gt; <strong>nmEnroll (&#8216;D:/weblogic/wlserver_10.3/common/nodema</strong></p>
<p><strong>nager&#8217;</strong>)</p>
<p>Enrolling this machine with the domain directory at D:/weblogic/wlserver_10.3/co</p>
<p>mmon/nodemanager &#8230;</p>
<p>Successfully enrolled this machine with the domain directory at D:\weblogic\wlse</p>
<p>rver_10.3\common\nodemanager.</p></blockquote>
<p>经过以上步骤，就可以在管理控制台中，通过“服务器——your server——控制”来启动，但因为使用的是demo CA，日志里会提示不安全的信息。如果你希望使用自己的CA文件，可以参考这篇<a href="http://www.blogjava.net/security/archive/2007/09/04/weblogic_Nodemanager_configuration.html" target="_blank">《关于配置Weblogic的NodeManager服务》</a></p>
<h4>另一种选择</h4>
<p>如果nodemanager配置不成功，可以用命令行来启动，也很方便</p>
<p>首先用startWebLogic.sh(cmd)来启动管理控制台</p>
<p>然后 startManagedWebLogic.sh app1（cluster中的server名） http://*.*.*.*:7001 即可</p>
<p>启动proxy 使用startManagedWebLogic.sh proxy http://*.*.*.*:7001</p>
<p>停止server使用stopWebLogic.sh app1 t3://*.*.*.*:7001</p>
<p>管理控制台一般不用重启。</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://www.hashei.me/2009/04/patch-install-for-was.html" rel="bookmark" title="Permanent Link: Websphere入门篇（二）-为WAS打上补丁">Websphere入门篇（二）-为WAS打上补丁</a></li><li><a href="http://www.hashei.me/2010/05/weblogic%e5%a6%82%e4%bd%95%e6%9b%b4%e6%8d%a264%e4%bd%8djdk.html" rel="bookmark" title="Permanent Link: WebLogic如何更换64位JDK">WebLogic如何更换64位JDK</a></li><li><a href="http://www.hashei.me/2009/05/websphere-topology-terminology2.html" rel="bookmark" title="Permanent Link: Server Node Cell Cluster-WebSphere拓扑结构及术语介绍下">Server Node Cell Cluster-WebSphere拓扑结构及术语介绍下</a></li><li><a href="http://www.hashei.me/2009/05/websphere-topology-terminology.html" rel="bookmark" title="Permanent Link: Server Node Cell Cluster&mdash;Websphere拓扑结构及术语介绍上">Server Node Cell Cluster&mdash;Websphere拓扑结构及术语介绍上</a></li><li><a href="http://www.hashei.me/2009/08/install-weblogic-as-service-and-recovery-password.html" rel="bookmark" title="Permanent Link: 注册Weblogic9为Windows服务及外一篇">注册Weblogic9为Windows服务及外一篇</a></li></ul><hr /><small>  Copyright &copy; 2008 This feed is for personal, non-commercial use only<br />
<a href=www.hashei.com >聚沙成塔-小哈的记事薄</a> by hashei 
如果喜欢，欢迎订阅<a href=feed.hashei.com >feed.hashei.com</a><br />
Digital Fingerprint:
 10f920a9f2bae51c3c73c4f5fb50a949</small>]]></content:encoded>
			<wfw:commentRss>http://www.hashei.me/2009/09/weblogic-cluster-step-by-step.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>注册Weblogic9为Windows服务及外一篇</title>
		<link>http://www.hashei.me/2009/08/install-weblogic-as-service-and-recovery-password.html?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=install-weblogic-as-service-and-recovery-password</link>
		<comments>http://www.hashei.me/2009/08/install-weblogic-as-service-and-recovery-password.html#comments</comments>
		<pubDate>Fri, 07 Aug 2009 04:34:23 +0000</pubDate>
		<dc:creator>hashei</dc:creator>
				<category><![CDATA[中间件]]></category>
		<category><![CDATA[weblogic]]></category>
		<category><![CDATA[系统服务]]></category>
		<category><![CDATA[遗忘密码]]></category>

		<guid isPermaLink="false">http://www.hashei.me/2009/08/install-weblogic-as-service-and-recovery-password.html</guid>
		<description><![CDATA[ Weblogic8时代将weblogic注册成为Windows服务是一件很简单的事，只要执行Domain目录下的installService.cmd即可。不过进入Weblogic9之后，domain目录下就没有了那个脚本，而是出现在%WL_HOME%/server/bin下，直接运行会生成一个“bea _”的服务，运行的话。。。没有任何结果，BEA的edocs上也没有找到有用的帮助。
以下内容，是我盯着installService.cmd和startWeblogic.cmd出神良久后试验成功的。


复制一份installServer.cmd到domain目录下，


编辑installServer.cmd，在set WL_HOME=……&#160;&#160; 下添加set DOMAIN_HOME=&#60;你的domain目录&#62;


将下一行的call &#8220;%WL_HOME%\common\bin\commEnv.cmd&#8221;修改成call &#8220;%DOMAIN_HOME%\bin\setDomainEnv.cmd&#8221;（如果这里的setDomainEnv.cmd写完整路径，那么上一步DOMAIN_HOME可以不用设置，因为setDomainEnv.cmd里还会声明一遍的）


另起一行，添加两行“set USERDOMAIN_HOME=%DOMAIN_HOME%”“set DOMAIN_NAME=&#60;你的domain名字&#62;”（这是脚本最末一段Install the service里beasvc命令所需要的参数）


运行installServer.cmd，会在服务里新建一个名为“beasvc %DOMAIN_NAME%_%SERVER_NAME%”的服务，自动运行，帐户属性的是localsystem。


beasvc命令各个参数的详细意义可以参考beasvc /help
以上内容对于Oracle Weblogic 10依旧有效。
weblogic密码遗忘补救方法

备份&#160;&#160; %DOMAIN_HOME%/security下的DefaultAuthenticatorInit.ldift文件，和%DOMAIN_HOME%下的boot.properties文件（如果不在这个目录，那么找找 %DOMAIN_HOME%/servers/AdminServer/security目录），这样如果下列步骤操作失败还能还原回去。
&#160; 运行java -cp /bea/weblogic92/server/lib/weblogic.jar weblogic.security.utils.AdminAccount &#60;新用户名&#62; &#60;新密码&#62; .(注意最后有个点的，点之前有空格，不要和原先的一样)
执行完后在当前目录会生成一个新的DefaultAuthenticatorInit.ldift文件，然后替换原来的%DOMAIN_HOME%/security/DefaultAuthenticatorInit.ldift文件。
从%DOMAIN_HOME%/servers/AdminServer/data/ldap/子目录中删除初始化状态文件DefaultAuthenticatormyrealmInit.initialized，删除boot.properties。
运行startWebLogic.sh，启动过程中会让你输入用户名和密码，输入新建立的那个
用新的用户名密码登录管理控制台，在“安全领域”里点击“myrealm”，在用户和组里，找到之前的那个用户，修改密码，保存，那么以后可以继续使用原来的用户名和密码登录，
修改boot.properties中的用户密码为上一步修改过的用户密码（明文）格式为username=用户名password=密码
重启服务器，现在不用输入用户名密码了，成功启动后，weblogic会加密用户密码的，现在就可以用旧用户登录，新用户可以删除。

Related posts:Business Objects Enterprise3.1、Metedate安装指南Weblogic10.3.0在AIX6.1、JDK1.6下挂起解决方法WebLogic9和10集群安装配置过程服务器备份软件Acronis True Image介绍WebLogic如何更换64位JDK  Copyright &#169; 2008 This feed is for personal, non-commercial use only
聚沙成塔-小哈的记事薄 by hashei 
如果喜欢，欢迎订阅feed.hashei.com
Digital Fingerprint:
 10f920a9f2bae51c3c73c4f5fb50a949]]></description>
			<content:encoded><![CDATA[<p style="text-indent: 24pt"> Weblogic8时代将weblogic注册成为Windows服务是一件很简单的事，只要执行Domain目录下的installService.cmd即可。不过进入Weblogic9之后，domain目录下就没有了那个脚本，而是出现在%WL_HOME%/server/bin下，直接运行会生成一个“bea _”的服务，运行的话。。。没有任何结果，BEA的edocs上也没有找到有用的帮助。</p>
<p style="text-indent: 24pt">以下内容，是我盯着installService.cmd和startWeblogic.cmd出神良久后试验成功的。</p>
<ol>
<li>
<div style="text-indent: 24pt">复制一份installServer.cmd到domain目录下，</div>
</li>
<li>
<div style="text-indent: 24pt">编辑installServer.cmd，在set WL_HOME=……&nbsp;&nbsp; 下添加set DOMAIN_HOME=&lt;你的domain目录&gt;</div>
</li>
<li>
<div style="text-indent: 24pt">将下一行的call &#8220;%WL_HOME%\common\bin\commEnv.cmd&#8221;修改成call &#8220;%DOMAIN_HOME%\bin\setDomainEnv.cmd&#8221;（如果这里的setDomainEnv.cmd写完整路径，那么上一步DOMAIN_HOME可以不用设置，因为setDomainEnv.cmd里还会声明一遍的）</div>
</li>
<li>
<div style="text-indent: 24pt">另起一行，添加两行“set USERDOMAIN_HOME=%DOMAIN_HOME%”“set DOMAIN_NAME=&lt;你的domain名字&gt;”（这是脚本最末一段Install the service里beasvc命令所需要的参数）</div>
</li>
<li>
<div style="text-indent: 24pt">运行installServer.cmd，会在服务里新建一个名为“beasvc %DOMAIN_NAME%_%SERVER_NAME%”的服务，自动运行，帐户属性的是localsystem。</div>
</li>
</ol>
<p style="text-indent: 24pt">beasvc命令各个参数的详细意义可以参考beasvc /help</p>
<p style="text-indent: 24pt">以上内容对于Oracle Weblogic 10依旧有效。</p>
<h4>weblogic密码遗忘补救方法</h4>
<ol>
<li>备份&nbsp;&nbsp; %DOMAIN_HOME%/security下的DefaultAuthenticatorInit.ldift文件，和%DOMAIN_HOME%下的boot.properties文件（如果不在这个目录，那么找找 %DOMAIN_HOME%/servers/AdminServer/security目录），这样如果下列步骤操作失败还能还原回去。
<li>&nbsp; 运行<strong>java -cp /bea/weblogic92/server/lib/weblogic.jar weblogic.security.utils.AdminAccount &lt;新用户名&gt; &lt;新密码&gt; .</strong>(注意最后有个点的，点之前有空格，不要和原先的一样)
<li>执行完后在当前目录会生成一个新的DefaultAuthenticatorInit.ldift文件，然后替换原来的%DOMAIN_HOME%/security/DefaultAuthenticatorInit.ldift文件。
<li>从%DOMAIN_HOME%/servers/AdminServer/data/ldap/子目录中删除初始化状态文件DefaultAuthenticatormyrealmInit.initialized，删除boot.properties。
<li>运行startWebLogic.sh，启动过程中会让你输入用户名和密码，输入新建立的那个
<li>用新的用户名密码登录管理控制台，在“安全领域”里点击“<a href="http://localhost:7001/console/console.portal?_nfpb=true&amp;_pageLabel=RealmgeneralTabPage&amp;SecurityRealmRealmGeneralPortlethandle=com.bea.console.handles.SecurityMBeanHandle%28%22Security%3AName%3Dmyrealm%3Bweblogic.management.security.RealmMBean%22%29">myrealm</a>”，在用户和组里，找到之前的那个用户，修改密码，保存，那么以后可以继续使用原来的用户名和密码登录，
<li>修改boot.properties中的用户密码为上一步修改过的用户密码（明文）格式为<br />username=用户名<br />password=密码
<li>重启服务器，现在不用输入用户名密码了，成功启动后，weblogic会加密用户密码的，现在就可以用旧用户登录，新用户可以删除。</li>
</ol>
<hr /><h2>Related posts:</h2><ul><li><a href="http://www.hashei.me/2009/05/how-to-install-boe3.html" rel="bookmark" title="Permanent Link: Business Objects Enterprise3.1、Metedate安装指南">Business Objects Enterprise3.1、Metedate安装指南</a></li><li><a href="http://www.hashei.me/2009/08/cr370915_in_weblogic10-3_and_jdk1-6.html" rel="bookmark" title="Permanent Link: Weblogic10.3.0在AIX6.1、JDK1.6下挂起解决方法">Weblogic10.3.0在AIX6.1、JDK1.6下挂起解决方法</a></li><li><a href="http://www.hashei.me/2009/09/weblogic-cluster-step-by-step.html" rel="bookmark" title="Permanent Link: WebLogic9和10集群安装配置过程">WebLogic9和10集群安装配置过程</a></li><li><a href="http://www.hashei.me/2009/12/introduction_of_acronis_true_image.html" rel="bookmark" title="Permanent Link: 服务器备份软件Acronis True Image介绍">服务器备份软件Acronis True Image介绍</a></li><li><a href="http://www.hashei.me/2010/05/weblogic%e5%a6%82%e4%bd%95%e6%9b%b4%e6%8d%a264%e4%bd%8djdk.html" rel="bookmark" title="Permanent Link: WebLogic如何更换64位JDK">WebLogic如何更换64位JDK</a></li></ul><hr /><small>  Copyright &copy; 2008 This feed is for personal, non-commercial use only<br />
<a href=www.hashei.com >聚沙成塔-小哈的记事薄</a> by hashei 
如果喜欢，欢迎订阅<a href=feed.hashei.com >feed.hashei.com</a><br />
Digital Fingerprint:
 10f920a9f2bae51c3c73c4f5fb50a949</small>]]></content:encoded>
			<wfw:commentRss>http://www.hashei.me/2009/08/install-weblogic-as-service-and-recovery-password.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

