技巧
· 为了正常关闭生产服务器,需要使用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 ,以便调整异步消息管道的大小。
· 为了避免消息增长,在连接工厂级别上设置 Time To Live 属性。
· 禁用默认的JMS连接工厂;针对生产配置特定于应用程序的JMS连接工厂。
· 为跨物理目的地(在不同的JMS服务器中进行配置)的负载平衡JMS消息配置一个分布式的目的地。
· 当部署分布式目的地时,针对群集中的每台JMS服务器和成员目的地使用类似的设置。
消息分页
永久性和非永久性消息消耗服务器内存,除非启用分页。消息分页是释放永久性和非永久性消息所占用的服务器内存的过程,因为永久性消息也会把它们的数据缓存在内存中。一条被换出页面的消息不会释放它使用的所有内存。消息头和消息属性仍然留在内存中,以供查找、排序和过滤之用。在事务性会话中发送的消息只有在会话被提交后才适合于分页。在这之前,消息被保存在内存中。
技巧
· 如果启用JMS分页,而且没有配置分页存储器, WLS 8.1会自动创建一个分页存储器,但是推荐显式地配置页面存储器(您可以指定存储器的位置)。
· JMS分页增加了一个WebLogic Server实例能够包含的消息数据的数量,而不要求增加JVM堆大小。
· 分页的确会降低性能,但是对非永久性消息进行分页时,其效果比对永久性消息分页时要小。
· 始终为WebLogic JMS Server配置限额;限额可以防止消息溢出服务器内存。
流控制
定义JMS服务器之后,您可以配置一个或多个连接工厂,以使用预定义的属性创建连接。借助流控制功能,您可以在消息生产程序确定自己将会变得过载时,引导JMS服务器或目的地降低它的速度。
技巧
· 为了降低过于活跃的、从WebLogic Server 进程之外淹没目的地的生产程序的速度,需要配置流控制。
· 在服务器内部使用流控制会导致服务器线程速度变慢;要小心使用。 |