工作负载管理组件故障诊断技巧
如果工作负载管理组件不在多节点配置中跨服务器正确地分布工作负载,那么使用以下选项来隔离此问题。
- 确保工作负载分布在各个集群各服务器上。
- 解决多服务器 Deployment Manager 环境设置存在的任何问题。
- 消除环境或配置问题
浏览日志文件以查找 WLM 错误和 CORBA 次代码
分析 PMI 数据
- 解决问题或联系 IBM 技术支持
消除环境或配置问题
- 集群成员或管理服务器(例如,Deployment Manager 或 Node Agent)存在网络连接问题吗?
- 如果存在,ping 这些机器以确保它们正确连接到网络。
- 安装服务器的机器上存在影响服务器服务请求的能力的活动吗?例如,检查由任务管理器、处理器标识或一些其他外部工具测量的处理程序使用,以查看是否:
- 它不是所期望的,或是不稳定的(而非稳定)。
- 它显示不在利用新添加、安装或升级的集群成员。
- 您在每个节点上启动的所有应用程序服务器是正在运行还是某些应用程序服务器已停止?
- 安装了应用程序并且正在运行吗?
- 如果问题与在容器管理的持久性 (CMP) 或 Bean 管理的持久性 (BMP) 企业 Bean 之间分配工作负载有关,那么您是否已在每个服务器上配置支持的 JDBC 提供程序和 JDBC 数据源?
如果您经历与 HTTP 请求相关的工作负载管理问题(如,HTTP 请求不是由集群的所有成员服务的),并且如果未建立亲缘关系,那么要知道 HTTP 插件将跨 PrimaryServers 列表中定义的所有服务器对负载进行均衡。如果您未定义 PrimaryServers 列表,并且未建立亲缘关系,那么此插件将跨此集群中定义的所有服务器进行负载均衡。如果已建立亲缘关系,那么插件应直接到达该服务器以获取所有请求。
- 权重设为允许的值吗?
- 对于所讨论的集群,登录到管理控制台并:
- 选择 。
- 从此列表选择您的集群。
- 选择集群成员。
- 对于集群中的每个服务器,单击 server_name 并注明指定的服务器权重。
- 确保权重在有效的 0-20 范围内。如果服务器的权重为 0,那么不会将请求路由到此服务器。大于 20 的权重视为 0。
- 对于所讨论的集群,登录到管理控制台并:
此文章的剩余部分仅论述企业 Bean 工作负载均衡。有关诊断分发 Web (HTTP) 请求时发生的问题的更多帮助,请查看“Web 服务器插件故障诊断技巧”主题和“Web 资源不显示”主题。
![[IBM i]](../images/iseries.gif)
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
浏览日志文件以查找 WLM 错误和 CORBA 次代码
- 已多次标记为不可用并保持为不可用的服务器。
- 集群中的所有服务器已标记为有错误并保持为不可用。
位置服务守护程序 (LSD) 已多次标记为不可用并保持为不可用。
为此,请在受影响的服务器上使用“日志和跟踪分析器”来打开服务日志 (activity.log) 并查找以下条目:
为此,请在受影响的服务器上打开服务日志并查找以下条目:
- WWLM0061W: 在向集群成员 member 发送请求时遇到一个错误,并且该成员已标记为不可用于将来的请求发送到集群 cluster。注: 服务器标记为不可用的情况很常见。由于正常的操作原因此服务器可能标记为不可用,例如,当服务器上仍存在一个来自客户机的负载时开始执行波动。同一时间获得多条针对某个成员的 WWLM0061W 警告消息也是常见情况。通常,多个线程上的进程中以及将成员标记为不可用之后存在一些请求,并且将该成员设为目标的线程很可能获得该警告消息。
- WWLM0062W: 在将请求发送到集群成员 member 时遇到错误,该成员标记为不可用于将来两次或两次以上请求该集群 cluster。
- WWLM0063W: 尝试使用 LSD LSD_name 解析集群 cluster 的对象引用时遇到一个错误,并已标记为不可用于将来请求该集群。
- WWLM0064W: 尝试将请求发送到集群 cluster 中的所有成员时遇到了错误,并且所有成员已标记为不可用于将来请求该集群。
- WWLM0065W: 尝试更新集群 cluster 中的集群成员 server 时遇到一个错误,因为它不可从 Deployment Manager 获得。
- WWLM0067W: 客户机收到重试请求的信号。由于 exception:{0},WLM 未能透明地重试服务器请求
在尝试为请求服务期间,WLM 遇到了将不允许透明地重新提交该请求的条件。正在捕获发起异常,并且正在向客户机抛出带有次代码 0x49421042 (SERVER_SIGNAL_RETRY) 的新 CORBA.TRANSIENT。
- 可能的用户响应,如更改配置设置。
- 可能指示产品缺陷的基类异常。
由于 WLM 使用 CORBA(公共对象请求代理体系结构)在进程间进行通信,因此您可能还会看到异常名称包含“CORBA”的异常。请在异常堆栈中查找指定了“次代码”的语句。这些代码表示 CORBA 调用或响应无法完成的特定原因。WLM 次代码的下降范围是 0x4921040 - 0x492104F。有关与 WLM 相关的次代码的说明,请参阅包和类 com.ibm.websphere.wlm.WsCorbaMinorCodes 的“参考:生成的 API 文档”主题。
![[IBM i]](../images/iseries.gif)
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
分析 PMI 数据
分析 PMI 数据的目的是了解到达集群的每个成员的工作负载。集群的任何一个成员的数据只有在集群的所有成员的数据上下文中有用。
使用 Tivoli® Performance Viewer 并根据对集群成员指定的权重(稳定状态权重)来验证是否每个服务器都获取正确比例的请求。
- 在树形视图中选择数据收集。未启用 PMI 的服务器会显示为灰色。
- 对于每个您要收集数据的服务器,单击指定...
- 现在您可启用度量值。在“性能监视设置”面板上将监视级别设为低
- 单击确定。
- 要保存您所作的更改,必须命中应用。
可在服务器上以服务器基础查看 WLM PMI 度量值。在 Tivoli Performance Viewer 中,选择
。缺省情况下数据在表中的原始格式中显示,每 10 秒收集一次作为聚集数字。您也可选择以增量或速率形式查看数据,添加或移除列,清除缓冲区,将度量值复位为零,以及更改收集速率和缓冲区大小。获取 PMI 数据后,您应计算集群每个成员的 numIncomingRequests 在集群所有成员的 numIncomingRequests 总数中所占的百分率。通过将这个百分比值与对每个集群成员指定的权重百分比进行比较,您就可以初步了解定向到每个集群成员的工作负载的平衡情况。
除 numIncomingRequests 以外,两个其他度量值显示集群的成员之间如何平衡工作,numincomingStrongAffinityRequests 和 numIncomingNonWLMObjectRequests。这两个度量值显示导向到集群的特定成员(此集群只可由此特定成员服务)的请求数。
- Server1 = 5
- Server2 = 3
- Server3 = 2
- % 路由到 Server1 = weight1 / (weight1+weight2+weight3) = 5/10 或 50%
- % 路由到 Server2 = weight2 / (weight1+weight2+weight3) = 3/10 或 30%
- % 路由到 Server3 = weight3 / (weight1+weight2+weight3) = 2/10 或 20%
现在,让我们考虑不存在既不具有强亲缘关系也不具有任何非 WLM 对象请求的输入请求的情况。
- numIncomingRequestsServer1 = 390
- numIncomingRequestsServer2 = 237
- numIncomingRequestsServer3 = 157
因此,入网集群的总请求数是:numIncomingRequestsCluster = numIncomingRequestsServer1 + numIncomingRequestsServer2 + numIncomingRequestsServer3 = 784
numincomingStrongAffinityRequests = 0
numIncomingNonWLMObjectRequests = 0
- % (实际)路由到 Server1 = 390 / 784 = 49.8%
- % (实际)路由到 Server2 = 237 / 784 = 30.2%
- % (实际)路由到 Server3 = 157 / 784 = 20.0%
- Server1 = 5
- Server2 = 3
- Server3 = 2
- % 路由到 Server1 = weight1 / (weight1+weight2+weight3) = 请求数的 5/15 或 1/3。
- % 路由到 Server2 = weight2 / (weight1+weight2+weight3) = 请求数的 5/15 或 1/3。
- % 路由到 Server3 = weight3 / (weight1+weight2+weight3) = 请求数的 5/15 或 1/3。
- numIncomingRequestsServer1 = 1236
- numIncomingRequestsServer2 = 1225
- numIncomingRequestsServer3 = 1230
- numIncomingRequestsCluster = numIncomingRequestsServer1 + numIncomingRequestsServer2 + numIncomingRequestsServer3 = 3691
- numincomingStrongAffinityRequests = 445,并且所有的 445 个请求都针对 Server1。
- numIncomingNonWLMObjectRequests = 0。
- % (实际)路由到 Server1 = 1236 / 3691= 33.49%
- % (实际)路由到 Server2 = 1225 / 3691= 33.19%
- % (实际)路由到 Server3 = 1230 / 3691= 33.32%
但是,此数据的正确解释是请求的路由不完全平衡,因为 Server1 具有几百个强亲缘关系请求。WLM 尝试通过将新入局请求择优地分布到不参与事务亲缘关系的服务器,补偿导向到 1 台或更多个服务器的强亲缘关系请求,以补偿参与事务的那些服务器。在具有强亲缘关系的入局请求和非 WLM 对象请求的情况下,分析将类似于此情况。
如果您分析了 PMI 数据并说明事务亲缘关系和非 WLM 对象请求,那么集群中到服务器的实际入局请求百分率不反映所 指定的权重,这表明未正确地均衡请求。如果是这种情况,那么建议您重复以上步骤,以便消除环境和配置问题并在继续之前浏览日志文件。
解决问题或联系 IBM 技术支持
如果 PMI 数据或客户机日志表明 WLM 中的一个错误,请收集以下信息并联系 IBM 支持机构。
如果客户机日志表明 WLM 中的一个错误,请收集以下信息并联系 IBM 支持机构。
- 您的环境的详细描述。
- 症状的描述。
集群中所有服务器的 SystemOut.logs 和 SystemErr.logs 文件。
集群中所有服务器的服务器日志文件。
activity.log 文件。
“首次故障数据捕获”日志文件。
PMI 度量值。
- 客户机尝试执行的操作描述和客户机的描述。例如,1 个线程、多个线程、Servlet 和 J2EE 客户机等。
如果这些步骤都无法解决该问题,请使用“诊断和修正问题:学习资源”主题中的链接来检查是否已识别并记录该问题。如果您未看到类似于您的问题,或者提供的信息未解决您的问题,请与 IBM 支持机构联系以获取进一步的帮助。
如果您的问题没有列出在那里,请与 IBM 技术支持联系。
有关 IBM 技术支持提供的关于已知问题及其解决方案的最新信息,请参阅 IBM 技术支持页面。在打开 PMR 之前还应先阅读此页面,原因是它包含可节省收集解决问题所需信息的时间的文档。
有关 IBM 技术支持提供的关于已知问题及其解决方案的最新信息,请参阅 IBM i 软件页面。在打开 PMR 之前还应先阅读此页面,因为它包含有关一些文档的信息,您必须收集这些文档并将它们发送给 IBM 以获得帮助来解决问题。