编辑: glay | 2017-03-05 |
14 服务器架构 套接字合成器概述 ? 检测已建立连接上的传入请求 ? 处理针对任何受支持协议的请求 ? 检查输入流的前几个字节,以便于: ? 确定协议 ? 确定请求目标(例如 MyServlet) ? 确定工作管理器 ? 封装请求并将其置于执行队列中 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
15 服务器架构 套接字合成器类型 ? 本地合成器 ― 服务器上的默认合成器 ? 使用本地节点检测传入请求 ? 最出色的性能和可伸缩性 ? Java 合成器 ― WebLogic RMI 客户端上的默认合成器 ? 使用轮询检测传入请求 ? 可伸缩性较低,使用执行队列中的线程 ? 如果无法加载本地合成器,服务器将使用 Java 合成器 ? NIO 合成器 ― ExaLogic 上的默认合成器 ? 所有 Java 版本的本地合成器 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
16 服务器架构 执行队列和执行线程 ? 在WLS 9.0 之前,所有执行队列都有自己的专用线程池 ? 线程数量需单独配置 ? 可以是固定数量,或者允许增加/减少 ? 所有传入请求都置于默认执行队列或用户定义的队列内 ? 请求始终采用先进先出 (FIFO) 的处理方式 ? 从WLS 9.0 开始,服务器使用一个基于优先级的自调优 执行队列 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
17 服务器架构 工作管理器概述 ? 将请求交给执行队列来处理时,影响调度的优先级 ? 默认工作管理器 ? 每个应用程序在请求调度中都处于同等地位 ? 没有限制(稍后讨论限制) ? 通常情况足以满足大多数应用程序的需求 ? CommonJ 是工作管理器的 API 接口 ? 推荐的方法,可避免单独创建线程 ? http://docs.oracle.com/cd/E24329_01/web.1211/e24432/self_ tuned.htm#i1069944 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
18 服务器架构 工作管理器概述(续) ? 在不同范围内自定义工作管理器和约束: ? 服务器 (config.xml) ― 可跨多个应用程序共享 ? 应用程序 (weblogic-application.xml) ― 特定于应用程序 ? 模块 (weblogic.xml/weblogic-ejb-jar.xml) ― 特定于模块 ? 元素用于关联应用程序/模块与工作 管理器 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
19 服务器架构 工作管理器类型和约束 ? 工作管理器的三种类型 ? 公平份额 ― 加权、公平份额调度 ? 响应时间 ― 响应时间 SLA 调度 ? 上下文 ― 基于用户/组的调度 ? 三种约束类型 ? 最小线程数 ? 最大线程数 ? 容量 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
20 服务器架构 工作管理器示例 ― 门户应用程序 门户 Web 应 用程序 请求 请求 请求 基于 HTTP 的内容 请求 阻塞 read() 内容 Web 应 用程序 请求 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
21 服务器架构 工作管理器最小线程约束 ? 不同于最小线程池大小! ? 预留的线程,用于处理与使用约束的工作管理器相关的请求 ? 过度使用会产生问题 ? 最佳实践: ? 仅在绝对必要时用来防止线程匮乏 ? 始终选择一个较小的值(例如 3) 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
22 服务器架构 最小线程示例 ― OSB 服务调出 代理 服务 业务 服务 Web 服务 wait() 请求 请求 响应 响应 服务调出 响应 notify() 请求 响应 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.
23 服务器架构 工作管理器最大线程数约束 ? 不同于最大线程池大小! ? 在主动处理与使用约束的工作管理器相关的请求时,可使用的 最大线程数 ? 如果请求数量超过限制,那么请求会排队,直到其他线程完成 ? 与MDB 一同使用 ― 我们将在稍后讨论 ? 最佳实践: ? 用于限制不太重要或负载较高的工作 ? 仅在必要时使用 版权所有 ? 2012,Oracle 和/或其分支机构.保留所有权利.