|
本文档提供了有关如何防止群集问题或如果出现群集问题如何对其进行排除方面的指南。
WebLogic Server 许可必须包括群集功能。如果尝试启动不具有群集许可的群集,将会出现错误消息“Unable to find a license for clustering”。
群集中所有服务器的主要版本号必须相同,但是次要版本号和 Service Pack 可以有所不同。
通常情况下,不会将群集的管理服务器配置为群集成员,但它运行的 WebLogic Server 主要版本应与受管服务器上使用的 WebLogic Server 主要版本相同。
群集未启动,或服务器加入群集失败的最常见原因之一就是多播地址有问题。
每个群集都需要一个多播地址。多播地址可以是从 224.0.0.0 到239.255.255.255 之间的一个 IP 号,或 IP 地址在该范围之内的主机名。
可在管理控制台中某个群集的“配置”-->“多播”选项卡上检查此群集的多播地址和端口。
对于网络上的每个群集,多播地址和端口组合必须是唯一的。如果网络上的两个群集使用相同的多播地址,则它们应使用不同的端口。如果这些群集使用不同的多播地址,则它们可以使用相同的端口,或接受默认端口 7001。
启动群集之前,请确保群集的多播地址和端口正确,并且不与网络上的任何其他群集的多播地址和端口冲突。
请确保群集中所有受管服务器上的 CLASSPATH 值是同一个值。CLASSPATH 是由 setEnv 脚本设置的,此脚本在运行 startManagedWebLogic 以启动受管服务器之前运行。
默认情况下,setEnv 会设置 CLASSPATH 的值(如 Windows 系统上的表示):
set WL_HOME=C:\bea\weblogic700
set JAVA_HOME=C:\bea\jdk131
.
.set CLASSPATH=%JAVA_HOME%\lib\tools.jar;
%WL_HOME%\server\lib\weblogic_sp.jar;
%WL_HOME%\server\lib\weblogic.jar;
%CLASSPATH%
如果更改一个受管服务器上的 CLASSPATH 值,或更改 setEnv 设置 CLASSPATH 的方式,则必须更改群集中所有受管服务器上的 CLASSPATH 值。
群集中的每个服务器实例都包含一个使用固定数目的执行线程配置的默认执行队列。要查看默认执行队列的线程计数,请在服务器的“配置”>“常规”选项卡的“高级选项”部分上选择“配置执行队列”命令。默认队列的默认线程计数为 15,最小值为 5。如果线程计数值小于 5,请将其更改为较大值,以便受管服务器在启动时不会挂起。
如果群集启动失败,或服务器加入群集失败,则首先检查已输入的所有命令(例如 startManagedWebLogic 或 java 解释器命令)是否存在错误或拼写错误。
在联系 BEA 技术支持请求解决与群集相关问题之前,请收集诊断信息。最重要的信息是包含受管服务器中多个线程转储的日志文件。日志文件对于诊断群集冻结和死锁问题尤其重要。
% java -ms64m -mx64m-verbose:gc-classpath $CLASSPATH
-Dweblogic.domain=mydomain -Dweblogic.Name=clusterServer1
-Djava.security.policy==$WL_HOME/lib/weblogic.policy
-Dweblogic.admin.host=192.168.0.101:7001
weblogic.Server>> logfile.txt
重定向标准错误和标准输出可将线程转储信息存储到包含服务器信息和错误消息的适当上下文中,并提供更有用的日志。
kill -3 或 <Ctrl>-<Break> 创建所需的线程转储以诊断问题。请确保在每台服务器上执行数次该操作(每次之间间隔 5-10 秒),以帮助诊断死锁问题。| 注意: | 如果正在 Linux 下运行 JRockit JVM,请参阅在 Linux 下获取 JRockit 线程转储。 |
% tar czf logfile.tar logfile.txt
如果在 Linux 下使用 JRockit JVM,请使用下列方法之一生成线程转储。
weblogic.admin THREAD_DUMP 命令。Xmanagement 选项启动 JVM),就可以使用 JRockit 管理控制台生成线程转储。 Kill -3PID,其中的 PID 是进程树的根。
所使用的 grep 参数为可在进程堆栈中找到的一个字符串,此进程堆栈与服务器启动命令相匹配。所报告的第一个PID 将成为根进程,假定尚未将 ps命令传送到另一个例程。
在 Linux 下,每个执行线程都显示为 Linux 进程堆栈中的一个单独进程。要在 Linux 上使用 Kill -3,所提供的内容必须与主 WebLogic 执行线程的 PID 相匹配;否则,将不会生成任何线程转储。
如果遇到群集问题,还应在受管服务器上检查垃圾收集。如果垃圾收集过程用时很长,服务器将不能产生频繁的检测信息,以告知其他群集成员服务器是否正在运行并可用。
如果垃圾收集(第一次生成或第二次生成)需要 10 秒或更多时间,则需要在系统上调整堆分配(msmx 参数)。
可通过从其中一个受管服务器中运行 utils.MulticastTest 来验证多播是否正在工作。请参阅“WebLogic Server 命令参考”中的使用 WebLogic Server Java 实用工具。
|