[z/OS]

HTTP 请求的 WLM 平均分配

z/OS® 工作负载管理 (WLM) 组件支持在服务方之间以循环方式分配没有服务方亲缘关系的入局 HTTP 请求。此功能用于(但并不限于)内存中保存的持续时间较长的 HTTP 会话对象、无状态会话 Enterprise JavaBeans (EJB) 和用于有状态会话企业 Bean 的 create 方法。可以配置本产品来使用此功能,以在当前已绑定到入站请求所在的工作队列的活动服务方之间传播 HTTP 请求。

下图表示一个集群服务器实例。集群 azsr01 包含应用程序服务器实例 azsr01a。应用程序服务器实例中包含控制器、工作负载管理器 (WLM) 队列和运行应用程序的服务方。控制器是 HTTP 和 IIOP 终接点。WLM 队列控制从控制器到服务方的工作流。每个服务方都包含用于从 WLM 队列中选择工具的工作程序线程。

图 1. 一个集群服务器实例的内容

入局请求进入控制区域,通过工作负载管理器队列,然后分配给特定服务方区域中的工作程序线程。

在上图中,应用程序服务器被配置为将服务方的最小数目和最大数目设置为 3。

此集群中的应用程序服务器具有 WLM 定义。azsr01 集群中任何应用程序服务器实例的所有请求都被分配给同一服务类。WLM 分类规则将正在 azsr01a 应用程序服务器中运行的所有相关可调度单元组分配给 AZAMS1 服务类。有关 WLM 服务类定义和分类规则的示例,请参阅下列各图。
图 2. WLM 服务类定义
   服务类  Xref  说明  选项  帮助
 --------------------------------------------------------------------------     
                           修改服务类               行 1 至 2(共 2 行)
 命令 ===> ______________________________________________________________
                                                                                
 服务类名 . . . . . : AZAMS1                                          
 描述 . . . . . . . . . WAS 相关可调度单元组工作
 工作负载名  . . . . . . . . ONL_WKL(名称或 ?) 基本资源组  . . . . . ________  (名称或 ?)  Cpu 临界 . . . . . . . . . 否       (是或否)
                                                                                
 指定“基本目标”信息。操作码:I=插入新的时段,
 E=编辑时段,D=删除时段。                                                                                
         ---时段---  ---------------------目标---------------------
 操作  #  持续时间   Imp  描述
   __
   __    1              1    执行速度 50
 ******************************* 数据底部 ********************************         
图 3. WLM CB 子系统分类规则
   子系统类型  Xref  说明  选项  帮助
 --------------------------------------------------------------------------
                  修改子系统类型的规则    行 11 至 20(共 20 行)
 命令 ===> ____________________________________________ 滚动 ===> CSR
                                                                           
 子系统类型 . : CB          折合限定词名称?Y  (Y 或 N)
 描述 . . . 组件代理程序请求
                                                                           
 操作码:  A=之后    C=复制     M=移动     I=插入规则
                 B=之前   D=删除行   R=重复   IS=插入子规则
                                                              更多 ===>
           --------限定词--------               -------类--------
 操作    类型       名称     开始                服务     报告
                                          缺省值:AZAMS1      RBBDEFLT
  ____  1  CN         AZSR01   ___                  AZAMS1      RAZAMS1       
  ____  1  CN         AZSR02   ___                  AZAMS2      RAZAMS2
  ____  1  CN         AZSR03   ___                  AZAMS3      RAZAMS3
****************************** 数据底部 *****************************

产品支持将内存中的 HTTP 会话对象用于具有多个服务方的应用程序服务器,这也称为服务方策略。在下图中,两个用户访问了 azsr01a 应用程序服务器实例中的一个应用程序。用户 1 在服务 方 3 中建立了一个 HTTP 会话对象。用户 2 在服务方 2 中建立了一个 HTTP 会话对象。

图 4. 用户建立 HTTP 会话对象

用户 1 在服务方 3 中建立一个 HTTP 会话对象。用户 2 在服务方 2 中建立一个 HTTP 会话对象。

当用户访问未建立 HTTP 会话对象的服务方区域时,不存在服务方区域亲缘关系。因此,可以将请求分派给任何可用服务方。如果存在下列所有情况,那么 WLM 可能会启动一个新的服务方:
  • 配置允许创建新的服务方
  • 工作负载管理器逻辑确定系统可以维持一个附加服务方
  • 添加另一个服务方导致缩短了队列延迟,并允许在指定目标中完成相关可调度单元组

将多个服务方绑定至同一服务类时,WLM 试图将新的请求分派给服务方。服务方具有已分派给它的最新请求并且具有可用线程。如果服务方有后备工作,那么 WLM 将该工作分派给另一个服务方。

因为服务方很可能已存储其所有必需的页面、就近保存即时 (JIT) 编译的应用程序方法并高速缓存全部数据以便快速检索数据,所以,通常情况下,运行此服务方策略是有好处的。但是,在以下情况中,此策略存在一个问题:

在最后一种情况中,导致分发 HTTP 会话对象时产生不期望的偏差。在下图中,已将大多数 HTTP 会话对象分配给服务方 1。
图 5. 分配给热服务方的 HTTP 会话对象

已将 HTTP 会话对象分配给热服务方(即,服务方 1)。

因为大多数时间内,WLM 队列中都没有足够的请求来保证在多个服务方之间分派工作,所以大部分 HTTP 会话对象都在一个或两个服务方中。此行为会导致下列意外结果。
  • 如果应用程序在单个服务方中创建大量对象,那么垃圾回收时间可能会很长。
  • 如果将所有 HTTP 会话对象都绑定到一个服务方,那么请求可能会由于 WLM 无法管理工作并且无法在任何服务方中分派工作而被保存在队列中很长一段时间。
  • 如果所有 HTTP 会话对象都在一个或两个服务方中,那么与在几个服务方中平均分配 HTTP 会话对象相比,单个服务方中的超时可能会影响更多用户。

如果配置遇到所描述的其中一种情况,这些情况导致服务方策略产生问题,那么可以将应用程序服务器配置为支持在服务方中分配没有服务方亲缘关系的入局 HTTP 请求。当启用此功能时,应用程序服务器会将 HTTP 请求循环分配给服务方。

在以下示例中,假定将应用程序服务器配置为在服务方中循环分配 HTTP 请求,并且为指定了同一服务类的工作队列请求启动了多个服务方。

当没有亲缘关系的新 HTTP 请求到达工作队列时,WLM 将检查是否有服务方至少有一个工作程序线程在 等待工作。如果任何服务方中都没有可用的工作程序线程,那么 WLM 会将请求放入队列,直到任何服务方中的工作程序线程可用为止。如果有可用的工作程序线程,那么 WLM 将查找亲缘关系最少的服务方。如果存在 亲缘关系数目相同的服务方区域,那么 WLM 会将工作分派给繁忙服务器线程较少的服务方区域。

此算法的目标是,WLM 负责使正在等待的服务方之间没有服务方亲缘关系的入局请求达到平衡,同时又要考虑不断变化的情况。算法不会盲目地将请求以真正的循环方式指定给服务器。下图说明了在服务方之间 平衡分配 HTTP 会话对象。

图 6. 分配给没有亲缘关系的服务方的 HTTP 会话对象

每个服务方接收数目大致相同的 HTTP 会话对象。

此分配机制对所有没有亲缘关系的入站请求起作用。在创建 HTTP 会话对象之后,所有客户机请求被都发送至该服务方,直到 HTTP 会话对象被移除为止。

如果决定允许分配没有服务方亲缘关系的入局 HTTP 请求,那么可能需要对分类映射文件进行一些更改。如果已设置 分类映射文件以在本产品提供的受管循环支持的映射规则中指定多个事务类,那么应从分类映射文件中移除此部分内容。


指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=crun_wlm_sessionplacement
文件名:crun_wlm_sessionplacement.html