WebLogicServer性能及调优-调优Java虚拟机.doc_第1页
WebLogicServer性能及调优-调优Java虚拟机.doc_第2页
WebLogicServer性能及调优-调优Java虚拟机.doc_第3页
WebLogicServer性能及调优-调优Java虚拟机.doc_第4页
WebLogicServer性能及调优-调优Java虚拟机.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WebLogic Server 性能及调整 -调整 Java 虚拟机Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。envelope下列部分讨论的是 WebLogic Server 的 JVM 调整选项: JVM 调整注意事项 哪种 JVM 适合您的系统? 垃圾收集 对 IA32 平台启用旋转功能 JVM 调整注意事项表 5-1 列出了针对 WebLogic Server 的 JVM 调整的一般注意事项:表 5-1 JVM 调整一般注意事项 调整因素信息引用JVM 供应商和版本仅可使用生产 JVM(在该 JVM 上,WebLogic Server 已通过认证)。此版本的 WebLogic Server 仅支持兼容 J2SE 5.0 的 JVM。Supported Configurations页会经常更新,其中包含有关各种平台的认证信息。调整堆大小和垃圾收集有关 WebLogic Server 堆大小调整的详细信息,请参阅垃圾收集。选择 GC(垃圾收集)方案许多 GC 方案均可用于管理系统内存,可用哪种方案取决于您的应用程序,如选择垃圾收集方案中所述。混合客户端/服务器 JVMWebLogic Server 支持使用不同 JVM 版本进行客户端和服务器部署。请参阅支持页获取混合客户端/服务器 JVM。UNIX 线程模型选择何种 Solaris 线程模型将对 Solaris 平台上的 JVM 性能产生巨大影响。可从多个线程模型以及所选模型内的各种同步方法中进行选择,但不同 JVM 的情况也有所不同。请参阅 Sun Microsystems 网站上的 Performance Documentation For the Java Hotspot Virtual Machine: Threading。 哪种 JVM 适合您的系统?虽然本部分着重介绍 Sun Microsystems 用于 Windows、UNIX 和 Linux 平台的 J2SE 5.0 JVM,但请注意 BEA JRockit JVM 是明确为服务器端应用程序开发的,并针对 Intel 体系结构进行了优化,可以确保 Java 应用程序的可靠性、可伸缩性、可管理性和灵活性。有关在 Windows 和 Linux 平台上使用 JRockit 的优势的详细信息,请参阅 Introduction to JRockit JDK。有关 JVM 的常规详细信息,请参阅 JVM 规范简介。有关 JVM 调整相关内容的链接,请参阅相关内容:性能工具和信息更换到另一个 JVM创建域时,如果选择自定义配置,则配置向导会显示 WebLogic Server 安装的 JDK 列表。在此列表中,您可以选择希望运行域的 JVM,然后 Configuration Wizard 将根据您的选择配置 BEA 启动脚本。如果在创建域之后,想要使用另一 JVM,请参阅更改运行服务器的 JVM。 垃圾收集垃圾收集是 VM 释放 Java 堆中未使用的 Java 对象的过程。下列部分提供有关调整 VM 垃圾收集的信息: VM 堆大小和垃圾收集 选择垃圾收集方案 使用详细垃圾收集确定堆大小 指定堆大小值 自动对内存不足情况进行日志记录 手工请求垃圾收集 请求线程堆栈VM 堆大小和垃圾收集Java 程序对象存储在 Java 堆中。Java 堆是包括活动对象、无效对象及可用内存的仓库。如果某对象不再能够在运行的程序中通过任何指针进行访问,则会将该对象视为“垃圾”,可以进行收集。将进行垃圾收集所耗费的时间调整为执行时间的 5% 以下,这是一种最佳实践。JVM 堆大小决定 VM 收集垃圾的频率及所耗费的时间。可以接受的垃圾收集速率因应用程序而异,并且应在分析垃圾收集的实际时间和频率后进行调整。如果将堆大小设置得很大,则执行完全垃圾收集的速度将会较慢,但收集频率会较低。如果根据内存需求设置堆大小,则完全垃圾收集的速度会较快,但收集频率会较高。调整堆大小的目的是将 JVM 进行垃圾收集所耗费的时间缩到最短,同时将 WebLogic Server 在某给定时间内可以处理的客户端数增至最大。要确保在基准测试期间得到最佳性能,可将堆大小值设置得很大,以确保不会在整个基准测试过程中进行垃圾收集。如果堆空间不足,则可能会出现以下 Java 错误:java.lang.OutOfMemoryError java.lang.OutOfMemoryError Exception in thread main要修改堆空间值,请参阅指定堆大小值。要配置 WebLogic Server 以便在堆空间用尽时自动进行检测,以及处理服务器中内存不足的情况,请参阅自动对内存不足情况进行日志记录和指定堆大小值。选择垃圾收集方案可从若干垃圾收集方案中进行选择,以管理系统内存,所选择的方案取决于所使用的 JVM。例如,某些垃圾收集方案更适用于给定类型的应用程序。了解应用程序的工作负荷以及 JVM 所用的各种垃圾收集算法之后,就可以优化垃圾收集的配置。请参阅下列链接,以查看 JVM 垃圾收集选项的深入讨论: 有关 Sun 的 HotSpot VM 可用的垃圾收集方案的概述,请参阅 Tuning Garbage Collection with the 5.0 Java Virtual Machine。 有关可用收集方案的详尽说明,请参阅 Improving Java Application Performance and Scalability by Reducing Garbage Collection Times and Sizing Memory Using JDK 1.4.1。 有关 BEA JRockit JDK 可用的垃圾收集方案的讨论,请参阅。 对于从 HP 视角来看有关垃圾收集的某些观点,请参阅 。使用详细垃圾收集确定堆大小通过详细垃圾收集选项 (verbosegc),能够精确测量向垃圾收集投入了多少时间和资源。要确定最有效的堆大小,请启用详细垃圾收集,然后将其输出重定向到日志文件,以便进行诊断。此过程的大致步骤如下:1 在运行应用程序时监视 WebLogic Server 在最大负载下的性能。1 用 -verbosegc 选项对 JVM 启用详细垃圾收集输出,然后将标准错误和标准输出都重定向到日志文件。 这会将线程转储信息存储到相应的 WebLogic Server 信息性消息和错误消息上下文中,从而提供更有用的日志以便进行诊断。例如,在 Windows 和 Solaris 中,输入下列代码:% java -ms32m -mx200m -verbosegc -classpath $CLASSPATH-Dweblogic.Name=%SERVER_NAME% -Dbea.home=C:bea-Dweblogic.management.username=%WLS_USER%-Dweblogic.management.password=%WLS_PW%-Dweblogic.management.server=%ADMIN_URL%-Dweblogic.ProductionModeEnabled=%STARTMODE%-Djava.security.policy=%WL_HOME%serverlibweblogic.policy weblogic.Server logfile.txt 2&1其中的 logfile.txt 2&1 命令可将标准错误和标准输出都重定向到日志文件。在 HPUX 中,可使用以下选项将 stderr stdout 重定向到单个文件:-Xverbosegc:file=/tmp/gc$.out其中 $ 可以映射到 Java 进程的进程 ID (PID)。因为输出中包括运行垃圾收集时的时间戳,所以可推断出进行垃圾收集的频率。1 分析下列数据点: 1 多长时间进行一次垃圾收集?在 weblogic.log 文件中,比较垃圾收集的时间戳。1 进行垃圾收集花费了多长时间?完全垃圾收集耗时不应超过 3 到 5 秒。1 平均内存占用量为多少?换句话说,每当完全垃圾收集执行完毕后,堆占用多少内存?如果堆始终占用 15%,则可以将堆大小设置得更小些。2 检查新一代堆大小 (Sun) 或温床大小 (BEA Jrockit)。 对于 BEA Jrockit:请参阅 BEA JRockit JVM 堆大小选项。 对于 Sun:请参阅 Java HotSpot VM 堆大小选项。3 确保堆大小不超过系统中可用 RAM 的大小。 在不会导致系统向磁盘“交换”页面的前提下,使用尽可能大的堆大小。系统中可用 RAM 的大小取决于硬件配置,以及在计算机中运行进程所需的内存量。确定系统中的可用 RAM 量时,可求助于系统管理员。4 如果发现系统收集垃圾所耗费的时间太长(分配的虚拟内存已超过 RAM 的处理能力),请减小堆大小。 通常应将可用 RAM(未被操作系统或其他进程占用)的 80% 用于 JVM。5 如果发现还有大量的可用 RAM,则在计算机中运行更多 WebLogic Server 实例。 记住,调整堆大小的目的是将 JVM 进行垃圾收集所耗费的时间缩到最短,同时将 WebLogic Server 在某给定时间内可以处理的客户端数增至最大。注意:JVM 供应商可能会提供用于打印详尽的垃圾收集报告的其他选项。例如,可在关闭程序时使用 BEA JRockit JVM -Xgcreport 选项打印详尽的垃圾收集报告,请参阅“。指定堆大小值可供 JVM 使用的 Java 堆大小对系统性能具有较大影响。本部分介绍用于定义堆大小值的命令行选项。每当启动 WebLogic Server 实例时,均需指定 Java 堆大小值。在 java 命令行中,或通过修改随 WebLogic 分发提供的示例启动脚本(用于启动 WebLogic Server)中的默认值,均可执行上述操作。 堆大小调整提示 BEA JRockit JVM 堆大小选项 Java HotSpot VM 堆大小选项堆大小调整提示以下部分提供了调整 VM 堆大小的一般准则: 堆大小应设置为一个适当的值,从而使 VM 使用的最大内存量不超过可用物理 RAM 量。如果超过该值,则 OS 会开始分页,性能也会显著降低。VM 使用的内存始终多于堆大小。除了堆大小设置,还要分配内部 VM 功能、VM 之外的本地库和永久代内存(仅适用于 Sun VM:存储类和方法所需的内存)所需的内存。 使用分代式垃圾收集方案时,温床大小不应超过 Java 堆总大小的一半。通常情况下,堆大小的 25% 到 40% 就已足够。 在生产环境中,将最小堆大小和最大堆大小设置为同一值,可以避免浪费用于时常调整堆大小所需的 VM 资源。这也适用于新一代堆大小 (Sun) 或温床大小 (BEA Jrockit)。BEA JRockit JVM 堆大小选项虽然 BEA JRockit 可以自动进行试探性堆大小调整,但这并不是所有应用程序的最佳选择。大多数情况下,最佳性能是通过调整每种应用程序的 VM 实现的,方法是调整表 5-2 中所示的堆大小选项。表 5-2 BEA JRockit JVM 堆大小选项任务选项注释设置温床-Xns最好尝试将温床设置得尽可能大,同时还要使垃圾收集暂停时间缩短至可以接受的程度。应用程序创建大量临时对象时,这尤其重要。温床的最大大小不能超过最大堆大小的 95%。设置最小堆大小-XmsBEA 建议将最小堆大小 (-Xms) 与最大堆大小 (-Xmx) 设置为相同的值,以便将垃圾收集的消耗降至最低。设置最大堆大小-Xmx如果与活动数据量相比,最大堆大小值设置得较低,则会因强制进行频繁垃圾收集而降低性能。设置垃圾收集-Xgc: parallel 尽早在运行 Java 应用程序时执行自适应优化。-XXaggressive:memory这样,瓶颈检测器会在开始时以较高的频率运行,然后逐渐降低频率。此选项还可以指示 BEA JRockit 主动使用可用内存。例如,从 java 命令行启动 WebLogic Server 实例时,可使用以下命令指定 BEA JRockit VM 堆大小值:$ java -Xns10m -Xms512m -Xmx512m这些值的默认大小的度量单位是字节。该值后附加字母“k”或“K”表示 KB;附加“m”或“M”表示 MB;附加“g”或“G”表示 GB。上例将 10 MB 内存分配给温床堆大小,将 512 MB 内存分配给运行在 JVM 中的 WebLogic Server 实例的最小和最大堆大小。有关针对 WebLogic 的 JRockit JVM 设置适当的堆大小的详细信息,请参阅 Tuning the JRockit JVM。其他 BEA JRockit VM 选项BEA 提供可以提高 BEA JRockit VM 性能的其他命令行选项。有关详细信息,请参阅 。Java HotSpot VM 堆大小选项通过分别调整每个应用程序,可以实现最佳性能。但是,在启动 WebLogic Server 时配置表 5-3 中列出的 Java HotSpot VM 堆大小选项,可以提高大多数应用程序的性能。这些选项因体系结构和操作系统而异。有关平台特定的 JVM 调整选项,请参阅供应商提供的文档。表 5-3 Java 堆大小选项 任务选项注释设置新一代堆大小-XX:NewSize将 -XX:NewSize 的大小设置为堆大小的四分之一,这是一条通用规则。如果存在大量短期对象,则增大此选项的值。在增加处理器的同时,一定要增加新一代堆大小。内存分配可以并行进行,但垃圾收集不可并行进行。设置最大新一代堆大小-XX:MaxNewSize设置新一代堆大小的上限。设置新堆大小比率-XX:SurvivorRatio新一代区域分为三个子区:Eden 和两个大小相等的生存空间。配置 Eden/生存空间大小的比率。尝试将此值设置为 8,然后监视垃圾收集情况。设置最小堆大小-Xms将最小堆大小 (-Xms) 与最大堆大小 (-Xmx) 设置为相同的值,以便将垃圾收集的消耗降至最低,这是一条通用规则。设置最大堆大小-Xmx设置堆大小的上限。设置大堆和私有共享内存-XX:+UseISM -XX:+AggressiveHeap请参阅 /docs/hotspot/ism.html例如,从 java 命令行启动 WebLogic Server 实例时,可使用以下命令指定 HotSpot VM 堆大小值:$ java -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8 -Xms512m -Xmx512m这些值的默认大小的度量单位是字节。该值后附加字母“k”或“K”表示 KB;附加“m”或“M”表示 MB;附加“g”或“G”表示 GB。上例将 128 MB 内存分配给新一代堆大小和最大新一代堆大小,将 512 MB 内存分配给运行在 JVM 中的 WebLogic Server 实例的最小和最大堆大小。其他 Java HotSpot VM 选项Sun 提供了可以提高 VM 性能的其他标准和非标准命令行选项。使用这些选项的方式取决于应用程序的编码方式。对客户端和服务器 JVM 进行测试,以确定更适用于特定应用程序的选项。Sun Microsystems 的 Java HotSpot VM Options 文档提供有关可以影响 Java HotSpot 虚拟机性能特征的命令行选项和环境变量的信息。有关 HotSpot VM 选项的其他示例,请参阅: Standard Options for Windows (Win32) VMs Standard Options for Solaris VMs. Standard Options for Linux VMs.Sun Microsystems 的 Java Virtual Machine 文档详细论述了 J2SE 5.0 Java 虚拟机的客户端和服务器实现。自动对内存不足情况进行日

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论