WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优...

71

Transcript of WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优...

Page 1: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)
Page 2: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

2 | © 2011 Oracle Corporation — 版权所有,属于机密信息

以下内容旨在概述产品的总体发展方向。该内容仅供参考,不可纳入任何合同。该信息不承诺提供任何资料、代码或功能,并且不应该作为制定购买决策的依据。描述的有关 Oracle 产品的任何特性或功能的开发、发行和时间规划均由 Oracle 自行决定。

Page 3: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

超强 (WLS/Java) 性能研讨会WebLogic Server 性能调优

Jonathan Leung

FMW APAC 性能专家

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 4: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

4

议题

• WebLogic Server 内核调优

• Web 应用程序调优

• JDBC 调优

• EJB/MDB 调优

• JMS 调优

• 应用程序调优

• 超时调优

• 诊断性能问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 5: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

5

WebLogic Server 内核调优与网络相关的可调整参数

• WebLogic Server 10.3.2+

• 最大线程数量为 4。

• WebLogic Server 10.3.1(及更低版本)

• 合成器线程数量 = CPU 数量 + 1

• 在采用多核 CPU 的较大系统上,合成器线程数量很容易超过 100

• 同步时的胖锁争用导致 CPU 利用率增加

• 合成器线程数量限制:-Dweblogic.SocketReaders=4

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 6: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

6

WebLogic Server 内核调优网络调优

• 始终验证 WebLogic 正在使用 NativeIO。以下消息指示其正在使用中

• <Aug 7, 2012 8:32:10 AM CDT> <Info> <Socket>

<BEA-000446> <Native IO Enabled.>

• 从 32 位 JVM 切换至 64 位 JVM 时需格外注意。32

位 WebLogic Server 下载文件不含套接字合成器所需的 64 位本地库。

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 7: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

7

WebLogic Server 内核调优Exalogic 优化

• 开启 Domain->Configuration->General 下的“ExalogicOptimizationsEnabled”标志

• 这将启用以下内核优化

• 纯 java NIO 套接字合成器

• 分散读取

• 集中写入

• JSSE 作为 SSL 提供程序

• 无锁定请求管理器

• 更加主动的自调优线程算法

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 8: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

8

WebLogic Server 内核调优监视通道连接

• 确保所有受管服务器中不出现 TCP 连接数过量或不平均的问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 9: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

9

WebLogic Server 内核调优线程

• 监视堵塞线程、队列长度、吞吐量

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 10: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

10

WebLogic Server 内核调优堵塞线程

• WLS 会监视其线程,以检测线程在处理某个请求时是否耗费过长时间。• “过长”是由 Stuck Thread Max Time (600 秒)定义的

• WLS 在检测到此类线程时会采取何种措施?• 将线程标记为 STUCK

• WLS 会立即记录一条包含线程堆栈行踪的警告消息

• 增加相应工作管理器的堵塞线程数

• 如果计数大于或等于堵塞线程数,则采取故障操作

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 11: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

11

WebLogic Server 内核调优堵塞线程(续)

• WebLogic Server 不会终止堵塞的线程

• 堵塞线程不一定是堵塞的• 只是运行时间较长

• 只表示在检测到线程时,所记录的堆栈行踪正处于当前执行的线程

• 该线程在被检测到之前或之后可以执行其他任务!

• 当您遇到一个堵塞的线程时• 定期完成多次线程转储

• 随时查看堵塞线程的堆栈行踪及其进度对于诊断问题非常重要。

• 可将 WLDF 配置为自动创建一个将包含一系列线程转储的事件

• Oracle SOA Suite 域可完成此 OOTB

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 12: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

12

WebLogic Server 内核调优工作管理器调优

• 仅根据需要创建工作管理器来避免线程不足

• 公平份额工作管理器通常可满足您的需要

• 监视

• 挂起的请求

• 最长等待时间

• 当前等待时间

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 13: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

13

WebLogic Server 内核调优工作管理器调优(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 14: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

14

WebLogic Server 内核调优工作管理器限制调优

• 最大线程数限制

• 限制为工作管理器处理请求的并发线程的数量

• 用于配置 MDB 并发性• 默认值是 16

• 容量限制

• 限制(当前正在处理和队列中的)总请求数,以避免资源问题。达到此容量限制时• HTTP 请求会获得一个 HTTP 503 响应

• RMI 客户端会获得一个 QueueThrottleException 响应

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 15: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

15

WebLogic Server 内核调优工作管理器限制调优(续)

• 最小线程数限制

• 保证有一定数量的线程可用于处理请求,从而避免线程不足

• 仅在绝对必要时使用

• 请使用非常小的值(例如 3)

• 如果尚未达到限制,则 WebLogic Server 会立即安排工作,直到达到最小线程数

• 设置过高的值会影响其他工作管理器的工作

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 16: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

16

WebLogic Server 内核调优独立 Java 客户端

• 首选 wlfullclient.jar

• 替代 weblogic.jar

• 使用 WebLogic JarBuilder 实用程序生成

• 使用 WLST 的客户端需要完整安装

• 如果 jar 大小至关重要,则使用 wlthint3client.jar

• wlclient.jar 使用 Java ORB

• 从 t3 URL 自行转换为使用 IIOP。

• 通常慢于 wlfulllclient.jar

• 对于多线程客户端不具备可伸缩性

• 用 wlthint3client.jar 替代 wlclient.jar

• 使用 t3 运行时提高速度和可伸缩性!

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 17: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

17

议题

• WebLogic Server 内核调优

• Web 应用程序调优

• JDBC 调优

• EJB/MDB 调优

• JMS 调优

• 应用程序调优

• 超时调优

• 诊断性能问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 18: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

18

Web 应用程序调优JSP 和 Servlet 更改检测调优

• WLS 可以自动检测和重新加载发生更改的Servlets/JSP

• 检查 Servlet 重新加载的时间间隔 (servlet-reload-check-secs)

• 检测到更改时重新加载整个 Web 应用程序!

• 检查 JSP 页面的时间间隔 (pageCheckSeconds)

• 重新编译并重新加载 JSP 页面

• 默认行为

• 开发模式,每秒检查一次

• 生产模式,从不检查

• weblogic.xml 中的值会覆盖默认值• 从开发模式切换至生产模式时需谨慎

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 19: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

19

Web 应用程序调优JSP 编译调优

• 默认情况下,系统会按需编译 JSP 文件

• 会导致第一次访问时响应速度较慢

• 为了避免这种初始开销,可使用 WLS 工具在部署之前对 JSP 文件进行预编译。

通过以下命令行预编译 JSP

java weblogic.appc hrWeb.war

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 20: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

20

Web 应用程序调优JSP 编译调优(续)

• 可强制 WLS 永远不使用 JspClassServlet 查找JSP 源文件

• 预编译 JSP 文件

• 将 jsp 扩展映射至 JspClassServlet

• 不需要将 JSP 文件打包到 WAR 中

<servlet>

<servlet-name>JSPClassServlet</servlet-name>

<servlet-class>weblogic.servlet.JSPClassServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>JSPClassServlet</servlet-name>

<url-pattern>*.jsp</url-pattern>

</servlet-mapping>

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 21: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

21

Web 应用程序调优JSP 和 Servlet 输出缓冲区调优

• 创建响应时的 Web 容器缓冲区输出

• 当缓冲区已满时,数据会立即刷新至客户端

• 数据发送至客户端之后不能再转发请求

• 相应地设置缓冲区大小

• ServletResponse.setBufferSize(int)

• <@page buffer=―64kb‖ @>

• WLS 的默认缓冲区大小是 12kb

• 避免在 ServletOutputStream 上调用 flush() 和close()

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 22: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

22

Web 应用程序调优HttpSession 复制调优

• WLS 仅复制会话的新属性/更改的属性

• 确保会话对象尽可能小

• 更适合存储大量属性,而非一个属性

• 仅在会话中放置可序列化的对象

• 操作失败将会阻止复制

• 监视整个集群中的主要负载分布

• 分布不均可能意味着负载平衡器/代理未正确分配负载

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 23: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

23

Web 应用程序调优HttpSession 复制调优(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 24: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

24

Web 应用程序调优HttpSession 复制调优(续)

• 确保现有会话的请求始终定向到承载主会话的服务器

• “获取”远程会话和移动辅助数据会显著影响性能

• WebLogic Web Server 插件提供了粘性路由

• 不需要在 Web 服务器前端建立 HWLB 粘性会话

• 如果未使用安装了 WL 插件的 Web 服务器,HWLB

会始终使用粘性会话

• 建议使用 Active Cookie Persistence

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 25: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

25

Web 应用程序调优Exalogic 会话复制优化

• 开启 Domain->Configuration->General 下的“ExalogicOptimizationsEnabled”标志

• 这会自动启用惰性反序列化

• 创建复制通道

• Environment->Servers-><服务器>->Protocols->Channels

• 启用该复制通道

• Cluster->Configuration->Replication

• 集群复制端口

• Environment->Servers-><服务器名称>->Configuration->Cluster

• 配置复制端口范围(例如: 8001-8010)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 26: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

26

Web 应用程序调优将 HTTP 会话分流至 Coherence*Web

• 如果内存中会话过多,那么 WLS 性能会受影响

• 请考虑使用 Coherence*Web 来处理用户数量较多、会话较大或会话超时较长的应用程序

• 将会话分流到数据网格中

• 增加网格中的 Coherence 节点的数量即可轻松实现扩展

• 允许跨应用程序共享会话

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 27: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

27

议题

• WebLogic Server 内核调优

• Web 应用程序调优

• JDBC 调优

• EJB/MDB 调优

• JMS 调优

• 应用程序调优

• 超时调优

• 诊断性能问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 28: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

28

JDBC 调优连接池大小调整

• 创建 DB 连接是一个非常耗时的过程• 理想情况下,设置为最小值 = 最大值,以避免按需创建连接

• 如果 DB 连接数受限,请将最小值设置为处理普通负载所需的连接数,将最大值设置为处理峰值负载所需的连接数,并启用池收缩

• 大多数应用程序在访问每个 DB 和处理每个并发请求时都只需要一个连接• 一般情况下,这意味着每个执行线程只需要一个连接。

• 可以考虑使用 <max-threads-constraint> 来防止系统争用数量有限的 DB 连接

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 29: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

29

JDBC 调优连接池大小调整(续)

• 在控制台中监视数据源统计数据• Active Connections High

Count

• Waiting on Connection

High Count

• Wait Seconds High

Count

• 进行相应的调优• 最大容量

• 连接预留超时(默认值:10 秒)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 30: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

30

JDBC 调优语句缓存调优

• WLS 会缓存 JDBC 语句对象

• 缓存依各个连接而定• 缓存的语句数量 = 连接数

* 缓存大小

• 根据命中率进行调优• WLS 控制台

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 31: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

31

JDBC 调优语句缓存调优(续)

• 数据库还会缓存经过分析的 SQL 语句

• Oracle DB 会将 SQL 缓存在共享池中

• SQL 缓存可跨所有连接共享

• 请与您的 DBA 共同优化SQL 的数据库分析

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 32: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

32

JDBC 调优Exalogic 优化

• 支持 SDP 的 JDBC 瘦型驱动程序

• JDBC URL:请将“(PROTOCOL = TCP)”替换为“(PROTOCOL = SDP)”

• 需要具有以下配置的 Oracle DB (Exadata)

• 配置了 SDP 监听器 (listener.ora)

• 使用 ActiveGridlink 数据库,而不是多数据源

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 33: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

33

JDBC 调优杂项调优

• Connection Creation Retry Seconds(默认值 = 0)• 如果某数据源的数据库不可用,那么此选项设置为默认值 0 时

WLS 将无法启动!

• 设置为非零值可让服务器顺利启动并定期重试创建连接池

• Seconds to Trust Idle Pool Connection(默认值 = 10 秒)• 与 Test Connections On Reserve 共同发挥作用

• 可显著减少连接测试查询

• 请考虑 LLR for JTA 事务• 仅有利于涉及多种资源的 XA 事务

• Last Logging Resource(非 XA)必须是数据库

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 34: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

34

JDBC 调优杂项调优(续)

• Remove Infected Connections Enabled(默认值 = on)

• 用于清理应用程序用来访问底层物理连接对象的连接

• 在使用物理连接访问特定于驱动程序的扩展时,禁用该选项可提高性能

• 仅在安全状态下使用!

• 应用程序不会保留对 Connection、Statements 或 ResultSet

对象的引用

• 应用程序不会更改连接的状态

• 有效的数据库用户 ID

• 自动提交状态

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 35: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

35

议题

• WebLogic Server 内核调优

• Web 应用程序调优

• JDBC 调优

• EJB/MDB 调优

• JMS 调优

• 应用程序调优

• 超时调优

• 诊断性能问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 36: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

36

EJB 调优无状态会话 Beans

• 通常,默认值足以满足要求

• initial-beans-in-free-pool = 0

• max-beans-in-free-pool = 1000

• 在池中创建新实例会占用资源,因此当运行时占用资源过高时,可通过调优 initial-beans-in-

free-pool 来加以改善

• 这会延长启动时间,不过可降低运行时资源占用

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 37: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

37

EJB 调优无状态会话 Beans

• 根据池丢失率进行调优

• 池丢失率 = (池总错失数/池总访问数) * 100

• 这些值以 MBeans 的形式存在(控制台、wlst、jmx)

• 较高的池丢失率表明缓冲池未经正确调优,因此无法在池中找到实例

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 38: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

38

EJB 调优无状态会话 Beans

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 39: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

39

EJB 调优MDB 调优

• 最大 MDB 并发数由以下因素决定:

• MDB 是否使用具有 max-threads-constraint 的自定义工作管理器?

• 是

• max-threads-constraint < max-beans-in-free-pool?

• 是:最大并发数 = max-threads-constraint

• 否:最大并发数 = max-beans-in-free-pool

• 否

• max-beans-in-free-pool > 16?

• 是:最大并发数 = 16

• 否:最大并发数 = max-beans-in-free-pool

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 40: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

40

EJB 调优MDB 调优(续)

• 要处理 MDB 中的错误,需采取以下措施:

• 对于事务交付,使用 setRollbackOnly() 强制消息返回源队列

• 对于非事务交付,抛出一个 RuntimeException 来防止消息确认。

• EJB 规范要求销毁 MDB 实例

• 使用 weblogic.ejb.NonDestructiveRuntimeException 防止 WLS 销毁 MDB 实例

• 使用外部 JMS 服务器处理远程目标

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 41: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

41

议题

• WebLogic Server 内核调优

• Web 应用程序调优

• JDBC 调优

• EJB/MDB 调优

• JMS 调优

• 应用程序调优

• 超时调优

• 诊断性能问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 42: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

46

JMS 调优应用程序间消息传递模式

生产应用程序

消费应用程序

概念模式

生产应用程序

SAF

消费应用程序

推模式

生产应用程序

消费应用程序

拉模式

当您可控制消费应用程序时,请优先使用拉模式,因为这种模式更加简单高效

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 43: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

47

JMS 调优了解 JMS 事务

• JMS 支持两种事务类型

• 事务性会话 — 仅涉及单一 JMS 会话上的 JMS 操作的本地事务

• JTA 事务 — 可包含其他事务性(例如 XA)资源的全局 JTA 事务

• 事务性会话与 JTA 事务互斥

• JTA 事务必须使用 createSession (false, …)

• 事务内部发送的消息会在提交时确认

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 44: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

48

JMS 调优选择一种持久存储类型

• WebLogic Server 支持两种类型的持久消息存储

• 文件存储

• 数据库存储

• 文件存储通常更快

• 数据库存储通常更易于确保高可用性

• JMS 存储必须具备故障切换所需的高可用性

• 文件存储共享磁盘(例如 SAN)

• 数据库存储可访问数据库

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 45: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

49

JMS 调优JMS 包装器

• WLS JMS 包装器提供以下特性:• JMS 连接、会话和生产者池化功能

• 测试/重建 JMS 连接

• 针对 XA 提供程序的自动事务登记

• 用法:• 使用以下方式将连接工厂及目标映射至应用程序:

• 部署描述符中的 <resource-ref> 条目或

• 使用带有依赖注入的 @Resource 批注

• 使用正常方法编写 JMS 代码来发送消息:• 为各请求创建新连接、会话和生产者

• 在各请求结束时关闭对象

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 46: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

50

JMS 调优JMS 检查表

• 使用者必须在一段较长的时间内跟上生产者的步调

• 避免集群内消息路由,以实现最佳性能和可伸缩性

• 使用 JMS 包装器在服务器端应用程序中发送消息

• 优先使用异步使用者

• 对于在 WLS 服务器中运行的消费者,请使用 MDB

• 对于独立消费者,请使用消息监听器

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 47: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

51

议题

• WebLogic Server 内核调优

• Web 应用程序调优

• JDBC 调优

• EJB/MDB 调优

• JMS 调优

• 应用程序调优

• 超时调优

• 诊断性能问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 48: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

54

应用程序调优应用程序性能问题

• 大多数应用程序性能问题都通常与争用相关:

• 过度使用同步

• 资源不足(例如,数据库连接)

• 后端系统过载

• 负载测试可识别大多数争用

• 定期执行线程转储(5 到 10 秒)

• 关联分析器,例如 JRockit Mission Control 或Yourkit

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 49: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

55

应用程序调优通过编码优化性能

• 缓存 JNDI InitialContext、Data Source、JMS

Connection Factory 和 Destination 对象

• 使用 Service Locator 模式缓存查找数据,或者

• 使用依赖注入

• 使用 Coherence 缓存常用数据

• 可显式地在您的应用程序中使用

• 可用作 JPA Level 2 缓存

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 50: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

56

议题

• WebLogic Server 内核调优

• Web 应用程序调优

• JDBC 调优

• EJB/MDB 调优

• JMS 调优

• 应用程序调优

• 超时调优

• 诊断性能问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 51: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

57

超时调优设置网络超时

• 设置适当的 CONNECT 和 READ 超时,以防止线程无限期挂起

• RMI — 使用 JNDI 时无默认超时值• 使用 JNDI InitialContext 属性设置连接超时值和读取超

时值

• weblogic.jndi.WLContext.REQUEST_TIMEOUT — 这是连接超时值

• weblogic.jndi.WLContext.RMI_TIMEOUT — 这是读取超时值

• 未来版本将使用:

• weblogic.jndi.WLContext.CONNECT_TIMEOUT

• weblogic.jndi.WLContext.RESPONSE_READ_TIMEOUT

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 52: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

58

超时调优设置网络超时(续)

• HTTP — 设置出站调用超时值

• 通过编程来设置• URLConnection.setConnectTimeout(int milliseconds)

• URLConnection.setReadTimeout(int milliseconds)

• 如果使用默认 weblogic.net.http 实现,则使用系统属性来设置默认值• -Dweblogic.http.client.defaultConnectTimeout=3000

• -Dweblogic.http.client.defaultReadTimeout=30000

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 53: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

59

超时调优设置网络超时(续)

• JDBC — 设置超时值,防止因服务器中的线程挂起而导致数据库问题

• 设置 Oracle Thin Driver 属性• oracle.net.CONNECT_TIMEOUT=3000

• oracle.jdbc.ReadTimeout=30000

• WebLogic 控制台

• 设置 Invocation Timeout Seconds 选项,避免受管服务器在物理上与网络断开;在这种情况下,管理服务器会尝试与其联系,从而导致线程无限期挂时• Domain Configuration General Advanced

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 54: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

60

超时调优RJVM 心跳调优

• RJVM — 两个 WebLogic 端点之间的逻辑、持久连接

• 可通过心跳来确定连接运行状况• 默认情况下,每隔 60 秒 (Period Length) 会发送一次心跳

• 默认情况下,4 次心跳丢失 (Idle Periods Until Timeout),连接就会宣布进入故障状态并关闭

• 默认情况下,检测到故障连接并尝试完成故障切换需要 240 秒的时间 (60*4)

• 若耗时太长,应调低此选项• Idle Periods Until Timeout 的最小值是 4

• 调低 Period Length

• Server Configuration Tuning Advanced

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 55: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

61

议题

• WebLogic Server 内核调优

• Web 应用程序调优

• JDBC 调优

• EJB/MDB 调优

• JMS 调优

• 应用程序调优

• 超时调优

• 诊断性能问题

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。 `

Page 56: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

62

诊断性能问题线程转储

• 定期完成多次线程转储

• 线程转储的方式有多种

• kill -3 <pid>(最佳)

• jstack <pid> (Hotspot)

• jrcmd <pid> print_threads (JRockit)

• 在 Windows 上使用 Ctrl-Break 键(仅前台进程)

• Visual VM

• WLST

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 57: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

63

诊断性能问题线程转储(续)

• 使用 ThreadLogic 分析线程转储(请原谅我的植入广告)

• 它可以自动根据常用模式进行分析并提供建议

• 它可以通过在一段时间内“区分”多次线程转储来提供建议

• http://java.net/projects/threadlogic

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 58: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

64

诊断性能问题线程转储(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 59: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

65

诊断性能问题线程转储(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 60: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

66

诊断性能问题堆转储

• 产生性能问题的一个常见原因就是频繁、长时间的 GC

暂停• 可能由内存占用高或内存泄漏造成

• 堆转储是某一个时间点的内存快照

• 获取 HPROF 堆转储的一些方式:• jmap –dump:format=b,file=heapdump.hprof <pid> (Hotspot)

• jrcmd <pid> hprofdump filename=heapdump.hprof (JRockit)

• jextract corefile [zipfile] (IBM)

• 请先将以下内容添加到 JVM 选项中:

• -Xdump:system:defaults:request=exclusive+prepwalk

• -XX:+HeapDumpOnOutOfMemoryError

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 61: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

67

诊断性能问题堆转储(续)

• 分析 HPROF 堆转储的各种工具

• Eclipse Memory Analyzer Tool (MAT)

• Visual VM

• Java Heap Analysis Tool (JHAT)

• YourKit

• 这些工具可展现

• 堆由哪些对象构成

• 通过比较和“区分”堆转储来检测内存泄漏

• MAT 或许是最常用和最简单的工具

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 62: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

68

诊断性能问题堆转储(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 63: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

69

诊断性能问题堆转储(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 64: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

70

诊断性能问题网络性能故障排除

• 诊断和排除潜在网络问题的最佳方式是使用数据包捕获

• 捕获数据

• tcpdump (Unix)

• 确保输出到文件中

• tcpdump –i bond0 -w file.pcap

• Wireshark (Windows)

• 使用 Wireshark 以可视化的方式分析数据包捕获

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 65: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

71

诊断性能问题网络性能故障排除(续)

• tcptrace

• 一个简便的实用程序,可分析数据包捕获并以简明的格式提供各种统计数据,例如数据包丢失和重传

• 另有预构建的 Windows 二进制文件(使用 cygwin)

• Fiddler

• 极其实用的 Web Debugging HTTP 代理,可截获浏览器请求/响应

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 66: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

72

诊断性能问题网络性能故障排除(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 67: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

73

诊断性能问题网络性能故障排除(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 68: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

74

诊断性能问题网络性能故障排除(续)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 69: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

75

诊断性能问题其他实用的分析工具

• JRockit Mission Control

• OOTB Flight Recorder 的性能开销极低,可在生产环境中使用

• 分析 GC 行为、潜在延迟问题

• Visual VM

• YourKit

• AD4J

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 70: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

76

诊断性能问题其他实用的分析工具(续)

• 操作系统工具

• truss/strace — 跟踪系统调用。

• 可有效确定性能问题是否发生在最低级别

• top、ps、prstat、vmstat、mpstat、iostat、netstat

等 — 在系统级别监视性能。

• 可有效监视 CPU、磁盘 I/O、NFS 统计数据、网络 I/O、虚拟内存统计数据、处理器统计数据和进程统计数据(例如每个线程的 CPU 使用量)

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。

Page 71: WebLogic Performance Tuning - Oracle...WebLogic Server 内核调优 与网络相关的可调整参数 • WebLogic Server 10.3.2+ •最大线程数量为4。• WebLogic Server 10.3.1(及更低版本)

77

问答

版权所有 © 2012,Oracle 和/或其分支机构。保留所有权利。