WebLogic-Server-性能及调优-调优-Java-虚拟机

亚瑟王 亚瑟王 2022-04-20 320 Java

 

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

下列部分讨论的是 WebLogic Server 的 JVM 调整选项:

 JVM 调整注意事项

哪种 JVM 适合您的系统?

垃圾收集

对 IA32 平台启用旋转功能

JVM 调整注意事项

表 5-1 列出了针对 WebLogic Server 的 JVM 调整的一般注意事项:

WebLogic-Server-性能及调优-调优-Java-虚拟机
WebLogic-Server-性能及调优-调优-Java-虚拟机

哪种 JVM 适合您的系统?

虽然本部分着重介绍 Sun Microsystems 用于 Windows、UNIX 和 Linux 平台的 J2SE5.0 JVM,但请注意 BEA JRockit JVM 是明确为服务器端应用程序开发的,并针对 Intel 体系结构进行了优化,可以确保 Java 应用程序的可靠性、可伸缩性、可管理性和灵活性。有关在 Windows 和 Linux 平台上使用 JRockit 的优势的详细信息,请参阅 Introductionto 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 进行垃圾收集所耗费的时间缩到最短,同时将 WebLogicServer 在某给定时间内可以处理的客户端数增至最大。要确保在基准测试期间得到最佳性能,可将堆大小值设置得很大,以确保不会在整个基准测试过程中进行垃圾收集。如果堆空间不足,则可能会出现以下 Java 错误:

java.lang.OutOfMemoryError <<no stack trace available>>

java.lang.OutOfMemoryError <<no stack trace available>>

Exception in thread "main"

要修改堆空间值,请参阅指定堆大小值。要配置 WebLogic Server 以便在堆空间用尽时自动进行检测,以及处理服务器中内存不足的情况,请参阅自动对内存不足情况进行日志记录指定堆大小值

选择垃圾收集方案

可从若干垃圾收集方案中进行选择,以管理系统内存,所选择的方案取决于所使用的 JVM。例如,某些垃圾收集方案更适用于给定类型的应用程序。了解应用程序的工作负荷以及 JVM所用的各种垃圾收集算法之后,就可以优化垃圾收集的配置。

请参阅下列链接,以查看 JVM 垃圾收集选项的深入讨论:

有关 Sun 的 HotSpot VM 可用的垃圾收集方案的概述,请参阅 TuningGarbage Collection with the 5.0 Java Virtual Machine

有关可用收集方案的详尽说明,请参阅 Improving Java ApplicationPerformance and Scalability by Reducing Garbage Collection Times andSizing Memory Using JDK 1.4.1

有关 BEA JRockit JDK 可用的垃圾收集方案的讨论,请参阅。

对于从 HP 视角来看有关垃圾收集的某些观点,请参阅 。

使用详细垃圾收集确定堆大小

通过详细垃圾收集选项 (verbosegc),能够精确测量向垃圾收集投入了多少时间和资源。要确定最有效的堆大小,请启用详细垃圾收集,然后将其输出重定向到日志文件,以便进行诊断。此过程的大致步骤如下: 在运行应用程序时监视 WebLogic Server 在最大负载下的性能。

用 -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%\server\lib\weblogic.policy"

weblogic.Server

>> logfile.txt 2>&1

其中的 logfile.txt 2>&1 命令可将标准错误和标准输出都重定向到日志文件。

在 HPUX 中,可使用以下选项将 stderr stdout 重定向到单个文件:-Xverbosegc:file=/tmp/gc$$.out其中 $$ 可以映射到 Java 进程的进程 ID (PID)。因为输出中包括运行垃圾收集时的时间戳,所以可推断出进行垃圾收集的频率。

分析下列数据点:

多长时间进行一次垃圾收集?在 weblogic.log 文件中,比较垃圾收集的时间戳。进行垃圾收集花费了多长时间?完全垃圾收集耗时不应超过 3 到 5 秒。平均内存占用量为多少?换句话说,每当完全垃圾收集执行完毕后,堆占用多少内存?如果堆始终占用 15%,则可以将堆大小设置得更小些。

检查新一代堆大小 (Sun) 或温床大小 (BEA Jrockit)。

对于 BEA Jrockit:请参阅 BEA JRockit JVM 堆大小选项

对于 Sun:请参阅 Java HotSpot VM 堆大小选项

确保堆大小不超过系统中可用 RAM 的大小。

在不会导致系统向磁盘“交换”页面的前提下,使用尽可能大的堆大小。系统中可用 RAM 的大小取决于硬件配置,以及在计算机中运行进程所需的内存量。确定系统中的可用 RAM 量时,可求助于系统管理员。

如果发现系统收集垃圾所耗费的时间太长(分配的虚拟内存已超过 RAM 的处理能力),请减小堆大小。通常应将可用 RAM(未被操作系统或其他进程占用)的 80% 用于 JVM。

如果发现还有大量的可用 RAM,则在计算机中运行更多 WebLogic Server 实例。记住,调整堆大小的目的是将 JVM 进行垃圾收集所耗费的时间缩到最短,同时将 WebLogicServer 在某给定时间内可以处理的客户端数增至最大。

注意:

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) 或温床大小 (BEAJrockit)。BEA JRockit JVM 堆大小选项虽然 BEA JRockit 可以自动进行试探性堆大小调整,但这并不是所有应用程序的最佳选择。大多数情况下,最佳性能是通过调整每种应用程序的 VM 实现的,方法是调整表 5-2 中所示的堆大小选项。

WebLogic-Server-性能及调优-调优-Java-虚拟机

例如,从 java 命令行启动 WebLogic Server 实例时,可使用以下命令指定 BEA JRockitVM 堆大小值:

$ java -Xns10m -Xms512m -Xmx512m

这些值的默认大小的度量单位是字节。该值后附加字母“k”或“K”表示 KB;附加“m”或“M”表示 MB;附加“g”或“G”表示 GB。上例将 10 MB 内存分配给温床堆大小,将 512 MB 内存分配给运行在 JVM 中的 WebLogic Server 实例的最小和最大堆大小。有关针对 WebLogic 的 JRockit JVM 设置适当的堆大小的详细信息,请参阅 Tuning theJRockit JVM

其他 BEA JRockit VM 选项

BEA 提供可以提高 BEA JRockit VM 性能的其他命令行选项。有关详细信息,请参阅 。

【下载地址】

百度网盘链接:https://pan.baidu.com/s/16gN8hQSeKimILGdYHiNW2g

提取码:mwyk


相关文章


使用-JFreeChart来创建基于web的图表

使用-JFreeChart来创建基于web的图表

XStream使用文档

XStream使用文档

WebService发布过程及常见问题

WebService发布过程及常见问题

webpack实战入门进阶调优分享

webpack实战入门进阶调优分享

weblogic调优参数及监控指标

weblogic调优参数及监控指标

weblogic节点管理

weblogic节点管理

weblogic管理控制台概述

weblogic管理控制台概述

weblogic-部署和启动

weblogic-部署和启动

WebLogic-Server-性能及调优-调优-Java-虚拟机

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

Velocity用户教程

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

Velocity用户手册

Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。

知之

知之平台是全球领先的知识付费平台。提供各个领域的项目实战经验分享,提供优质的行业解决方案信息,来帮助您的工作和学习

使用指南 建议意见 用户协议 友情链接 隐私政策 Powered by NOOU ©2020 知之