您的位置:首页 > 其它

WebLogic Server 管理最佳实践

2005-05-30 08:51 337 查看
转自:http://dev2dev.bea.com.cn/techdoc/webser/200408231.html

创建 WebLogic 配置/

域是一组逻辑上相关的WebLogic Server资源,您可以把它当作单个管理单元进行管理。域将所有的资源和应用程序信息保存在一个基于XML的配置库中。为了在WebLogic Server上部署并运行应用程序,首先要创建域。

推荐使用域配置向导作为创建新域的工具。如果您准备编写脚本来创建域,推荐使用slient模式的域配置向导这个工具。也可以从所提供的“开箱即用”的域模板或定制的域模板来创建WebLogic Server域。

为了创建定制的域模板,请使用配置模板生成器,它是一个单机的Java应用程序,能够让您创建定制的配置和扩展。您可以使用这些配置和扩展来创建和更新域。

域配置向导具有以下属性:

· 向导会引导您完成针对目标环境创建或扩展域的过程。

· 向导可以使用OOB预定义的域模板或定制域模板创建或扩展域。

· 向导将创建config.xml 文件,建立基本的安全性,构造启动脚本,等等。

· 可以使用graphical、console 或 silent模式启动向导。

要以graphical模式启动向导,请运行以下命令之一:



域配置模板生成器具有以下属性:

· 向导会引导您完成创建或扩展配置模板 (JAR file) 的过程。

· 配置向导可以使用已创建的配置(域)模板来创建域。

只能以graphical模式启动配置模板生成器。
要启动配置模板生成器,请运行以下命令之一:



技巧

· 如果 WebLogic Domain/Configuration 分布在多台物理机器上,那么应该只能在管理服务器硬件(机器)上运行域配置向导。

· 并不要求一定在托管服务器硬件上运行域配置向导。

· 在WebLogic Server 安装目录之外创建WebLogic域 (默认情况下,所创建的域位于%BEA_HOME%Ser_projectsdomains ) 。

· 为管理服务器创建启动脚本时,如果脚本(startWebLogic.cmd/sh)没有调用域目录中的weblogic.Server 类,使用这个命令行选项来指定域的位置:-Dweblogic.RootDirectory=path。

· 启动托管服务器(startManagedWebLogic.cmd/sh)时,如果进行设置的话, -Dweblogic.RootDirectory 将被设置为服务器根目录,该目录将被用于存储文件,比如日志文件和托管服务器独立(managed-server independence ,MSI)文件。

服务器启动

管理服务器从配置库(config.xml)加载所有配置。所有相关的托管服务器必须在启动期间连接到运行中的管理服务器。独立的托管服务器可以从本地库(msi-config.xml)加载配置。

如果WebLogic运行在装有Unix操作系统的计算机上,您可以为WebLogic Server进程分配一个UID或GID,以便在计算机执行所有优先的启动操作之后,以root用户的身份进行绑定。如果WebLogic Server用户想要绑定到更高的端口(>1024),则无需root权限。

技巧
编写使服务器启动自动化的脚本时,考虑以下因素:

· 在域中,必须在任何相关托管服务器之前启动管理服务器。

· 当把托管服务器作为相关服务器启动时,它连接到管理服务器,以便下载配置。

· 当把托管服务器作为独立服务器启动时,检查msi-config.xml 文件是否被存储在服务器根目录中。

· 在Unix中,使用 'nohup' 运行 WebLogic Server启动脚本,以保证即使您注销以后,服务器依然在后台运行。

· 在OS中,为安装和启动服务器创建一个WebLogic Server用户。

· 存储加密后的用户身份,使用boot.properties文件来避免启动脚本中出现硬编码的用户身份。

· 当把服务器绑定到较低端口(<1024)时(这需要root权限),使用 WebLogic UNIX机器配置来绑定UID 或 GID 。

· 为了使WebLogic域中的管理服务器在机器重启期间能够自动重启,使用操作系统提供的daemon进程功能。

o Windows 服务

o UNIX daemon 进程

· 当您使用域配置向导创建域时,域中的管理服务器可以被当成服务。

· 此外,可以使用位于域文件夹中的installservice.cmd和 uninstallservice.cmd 脚本在Windows Service Control Manager (SCM)中添加或删除服务。

· 如果管理服务器和托管服务器是同一台机器,配置管理服务器进程和托管服务器进程之间的OS级服务相关性。

· 配置rc脚本,以便在正确的运行级别上添加WebLogic 启动命令。

启动和关机类
可以把WebLogic Server配置为在启动和正常关机过程中调用类。在服务器初始化所有子系统之后和它给客户端访问开放端口之前,加载并执行启动类。类似地,在服务器启动正常关机进程之前加载关机类。和应用程序文件不同,必须手动地使启动和关机类在已部署服务器地本地classpath中可用。

技巧

· 在启动期间,使服务器级的启动类在已部署WebLogic Server实例的系统classpath 中可用。

· 域中的管理服务器到托管服务器都不能自动部署出现在系统classpath中的类;应用程序级别的类可以分布在域中的管理服务器到目标服务器上。

· 重新部署应用程序时,就会重新加载应用程序级别的启动类。

· 不能动态地重新加载服务器级别的启动类;只能在它们各自的WebLogic Server重新启动时重新加载它们。

· 使用应用程序级别的启动类,而不要定义服务器级别的启动类。

节点管理器
使用WebLogic Server提供的节点管理器功能自动启动托管服务器,或者重新启动出现故障的托管服务器。节点管理器使管理员可以从管理服务器或命令行(weblogic.Admin START…)远程启动托管服务器。这可以通过与管理服务器通信来实现,而不用依赖OS特定的远程登录功能。

此外,除了启动和关闭托管服务器之外,节点管理器还能够监控它所启动的服务器的健康状况。如果进行恰当的配置,在出现故障时,节点管理器能够自动重新启动托管服务器。

技巧

· 使用节点管理器时,显式地配置所托管服务器的有远程启动属性,而不要依靠节点管理器为托管服务器的配置提供的环境。

· 节点管理器只接收来自管理服务器的请求。管理服务器不可用时,想要通过节点管理器远程地重新启动托管服务器是不可能的。

· 把节点管理器配置为一个服务/ daemon。

· 启用托管服务器的自动重启。

· 配置机器在出现故障时自动关闭,以便在节点管理器尝试重新启动一个出现故障的实例之前关闭它。

· 运行在一台机器上的节点管理器可以被运行在该机器上的多台托管服务器所共享。

· 节点管理器还可以被运行在同一台机器上的多个域中的托管服务器所共享。

WebLogic Server 关闭过程
异常的JVM终止可以导致套接字或程序段这样的资源被锁定。在操作系统中关闭或终止WebLogic Server进程被认为是异常终止。
可以通过以下方式正常关闭WebLogic Server:

· 使用管理控制台'Graceful Shutdown" 超链接。

· 使用 weblogic.Admin SHUTDOWN… 命令。

· 使用JMX,具体是调用 ServerMBean 类的stop方法。

技巧

· 为了正常关闭生产服务器,需要使用WebLogic 管理控制台或者weblogic.Admin 实用程序。

· 正常关机不会异常终止用户会话;它等待HTTP会话完成或超时。

· 也可以把WebLogic Server配置为不等待(忽略Session During Shutdown 选项)。

· 正常关机超时是可配置的;默认情况下,服务器将会无限期地等待关机过程完成。

· 如果服务器没有响应正常关机请求,或者当服务器等待正在进行的会话时(处于待机状态)关闭服务器,使用'Force Shutdown' 选项。

· 如果被配置为daemon,确保将rc脚本中的stop方法配置为在机器重启和停止时正常关闭服务器。

· 如果对节点管理器进行配置,终止节点管理器将不会停止由它们启动的相应服务器。必须单独地停止各台托管服务器。

备份和恢复
为了在出现故障时迁移或恢复WebLogic域,定期备份管理服务器机器上的整个域目录树。这样,您就可以从硬件或系统故障中恢复,而要做的不过是还原域目录并重新启动管理服务器。

如果管理服务器崩溃,管理服务器将会把所有正在运行的托管服务器的相关信息保留在running-managed-servers.xml文件中。重新启动时,管理服务器将会读取这个文件,并尝试联系所有以前运行的托管服务器。如果没有托管服务器正在运行的话,discovery模式可能会增加管理服务器的启动时间,但是始终要使用discovery模式(默认情况下它是打开的),这样才能保证有托管服务器已经运行的情况下,管理服务器重新与所有托管服务器连接。

一些需要引起注意/定期从管理服务器机器上进行备份的重要文件有:

· config.xml
域配置库。

· config.xml.booted
成功启动时对域配置库的良好备份。

· boot.properties
启动管理服务器时需要的加密后的用户名和密码。

· running-managed-servers.xml
这是当前正在运行的相关托管服务器的一个列表。这个文件用于当管理服务器重新启动后,而且有托管服务器正在运行时,发现托管服务器。

· domain/configArchive/
包含域配置库文件的拷贝。使用管理工具进行更新时,管理服务器把旧的config.xml 文件复制到这个目录。

· domaindminserverdapdapfiles
当前被域的管理服务器使用的内嵌LDAP 数据文件。

· *.ldift 文件
这些文件可以用于把WebLogic Domain Embedded LDAP 服务器初始化为刚刚创建域时的样子。

· domain/adminserver/ldap/backup/EmbeddedLDAPBackup.zip
WebLogic Domain Embedded LDAP 服务器的备份。内嵌的LDAP被用于存储用户、组、角色、默认的安全领域使用的策略、myrealm的安全提供程序。

· Batch/Shell 脚本
setEnv.cmd/sh, startWebLogic.cmd/sh, startManagedWebLogic.cmd/sh。

为管理任务编写脚本
为了创建用于管理域配置的脚本:

· 使用weblogic.Admin实用程序命令BATCHUPDATE,它运行一个批处理文件中指定的一系列命令。这个命令使用一个JVM运行所有列出的命令。

· -Dweblogic.system.BootIdentityFile选项让您可以避免把用户名和密码硬编码在您的文本脚本中。

· 为了在操作系统脚本中构建逻辑分支,使用下面的命令求出weblogic.Admin命令的返回代码:

o %ERRORLEVEL% (Windows)

o 0 (bash shell)

· weblogic.Admin 的-adminurl 选项从管理服务器检索托管服务器的配置Mbean和运行时Mbean。

· 不推荐直接修改config.xml文件。

· 如果您必须修改config.xml文件:

o 首先,在编辑之前备份原始文件。

o 使用XML 编辑器,以避免录入错误。

o 当管理服务器正在运行时,要避免编辑该文件。

· 使用wlconfig Ant任务来为配置信息编写脚本,并把它集成到整个构建过程中。

· 当管理服务器正在运行并且处于离线状态时,使用 WebLogic Scripting Tool (WLST)来修改域配置。 (dev2dev.bea.com)

· WLST提供一个功能强大的到WebLogic Server的shell接口,而且它使用Jython 作为脚本语言。

· 您还可以使用第三方的解决方案来管理配置,比如WLShell使用程序。 (www.wlshell.com)

· WLShell提供一个功能强大的、Unix风格的到WebLogic Server的shell接口;它针对WebLogic Server MBean使用文件系统模拟 。

日志记录
日志记录了和事件(比如服务器的启动和关闭)、新应用程序的部署或者一个或多个子系统故障有关的信息。日志消息包括和事件的时间与日期,以及启动事件用户的ID有关的信息。每个WebLogic Server实例都可以维护一份服务器日志、一份HTTP访问日志、一份JDBC日志和一份JTA事务日志。

技巧

· 为了防止当日志文件所占空间过大时,出现相应的服务器重启的情况,需要启用日志旋转(log rotation)。

· 考虑按照大小旋转日志,而不是按照生成的时间旋转,因为使用生成时间这个选项会使文件增长非常迅速。

· 如果您没有进行交互式调试,而且WebLogic Server 是在后台(Windows 或 Unix)启动的,使用以下命令把stdout和stderr重定向到一个文件:

o -Dweblogic.Stdout="stdout-filename"

o -Dweblogic.Stderr="stderr-filename"

· 在生产中,如果您不启用WebLogic Server创建JDBC日志,您就可以避免服务器上的额外文件I/O。

· 使用节点管理器启动托管服务器时,节点管理器捕捉服务器的stdout并把它存储到一个文件中。可以使用管理控制台来查看该文件的内容。

· 经常检查WebLogic Server 的日志文件,以熟悉常规操作,这样您就能够很容易地辨认出异常的日志项。

JDBC
在WebLogic Server中,使用池缓冲到数据库的JDBC连接可以提高应用程序的性能。连接池根除了为每个应用程序创建新的数据库连接的需要。JDBC连接池提供到您数据库的现成连接。

使用连接池时,到数据库的连接的数目可以动态改变。但是,在负载高峰时期试图增加JDBC连接的数目将会使情况恶化,因为创建数据库连接是一项开销昂贵的操作。

连接池还可以通过缓存用于重用的prepared statement和callable statement来提高性能。重用prepared statement和callable statement可以降低数据库服务器上的CPU利用率。

通过把其他应用程序分离到单独的机器或硬件上,可以避免耗尽WebLogic Server机器上的处理能力;为数据库指派一台专用的机器。

技巧

· 如果有可能,按大小排列数据库连接池,这样它们就永远不会增加连接的数目;设置初始容量为最大容量。

· 设置连接池的最大容量至少等于执行线程的数量。

· 配置 Inactive Connection Timeout,以指定一个连接在被回收到池中之前,保持非活动状态的时间长短。

· Connection Leak Profiling选项显示了连接池中泄漏的连接。BEA建议您不要在生产中使用这个选项;它要使用额外的资源,并且通常会降低连接池操作的速度。

· 如果您能够负担把测试连接作为常规请求处理一部分所带来的开销,您可以只使用Test Reserved Connections 选项。

· 避免对“Test Table Name”使用生产表,而要使用哑表(例如Dual)。

· 使用语句缓存提高prepared 和 callable statement的性能。

· 为缓存选择 least-recently-used (LRU) 算法;这将从缓存中删除很少使用的语句。

· 当创建连接池或者启动WebLogic Server时,如果数据库不可访问,可以使用Connection Creation Retry Frequency 重新尝试建立到数据库的连接。

· 当WebLogic Server 正在运行时,如果重新启动数据库, Test Frequency可以从0开始增加,这样所有连接都会被关闭,然后被重新打开,以重新建立有效的物理连接。在重新创建所有连接之后,将它改回0将禁止测试。

· 当为连接池使用DataSource对象时,使用 Honors Global Transaction选项来创建TxDataSource。

· 您应该使用non-Tx DataSource的惟一场合就是当您想在数据库上完成一些工作,而又不想把该数据库包括到当前事务中时。

· 当配置一个连接池,以便与WebLogic JMS JDBC Store 一起使用时,使用non-XA 数据库驱动程序。

JMS
WebLogic Server JMS体系结构允许在一个WebLogic域中创建多台JMS服务器。但是每台JMS服务器只能在一台WebLogic Server上被实例化(目标化),因为它是一项“仅一次”的服务。一台JMS服务器可以作为多个目的地的宿主。永久性存储(基于磁盘的文件或可通过JDBC访问的数据库)可以被配置用于存储永久性的消息数据。

如果必须跨多个目的地共享一个JMS存储器,将多个目的地配置为驻留在一台JMS服务器上。但是,为了使用对每个目的地使用单独的永久性存储器,在多台JMS服务器下创建它们。

技巧

· 针对JMS文件存储启用直接写入同步写入策略,这可以释放虚拟内存(VM)堆,但是只有当存在一些并发的活动JMS客户端时,直接写入可以显著地提高性能。

· 在单独的磁盘上,或者甚至是在单独的磁盘控制器上分离文件存储。

· 为了使文件存储高度可用,您可以使用Storage Area Network (SAN),一种多端口的磁盘或者磁盘镜像技术。

· 不要把使用XA JDBC 驱动程序的连接池与JMS JDBC存储器关联起来,因为JMS JDBC存储器不支持XA 资源驱动程序(WebLogic JMS实现了它自己的XA资源)。

· 使用Using Expiration Scan Interval扫描目的地的到期消息可以释放VM,但是太频繁的扫描会增加扫描开销;确保您对此做最优调整。

· 在连接工厂上设置 MessagesMaximum ,以便调整异步消息管道的大小。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: