iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >BEA WebLogic JRockit中如何使用和性能调优
  • 770
分享到

BEA WebLogic JRockit中如何使用和性能调优

2023-06-03 07:06:17 770人浏览 八月长安
摘要

这篇文章主要介绍BEA WEBLogic JRockit中如何使用和性能调优,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.JRockit调优简介JRockit是一个自适应的JVM,它能够自动调整自己去适应底层硬件

这篇文章主要介绍BEA WEBLogic JRockit中如何使用和性能调优,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一.JRockit调优简介
JRockit是一个自适应的JVM,它能够自动调整自己去适应底层硬件,因此对它的调优主要集中在一些需要人工干预的参数上,比如说:需要划分多少RAM给JRockit使用等。JRockit有一组非标准的-X启动选项,我们可以用它来调节JVM。JRockit有两组主要的子系统可以被优化--内存管理系统(包括垃圾回收)和线程系统。在内存管理子系统方面,有很多调优的工作可以做。


二.Tuning WebLogic JRockit JVM
1.设置初始堆尺寸
可以通过-Xms:

m来设置初始堆大小,如果-Xmx的值小于128MB,则-Xms缺省取值为16MB;如果-Xmx设置大于128MB,则-Xms缺省值为物理内存的25%,最大不超过64M。例子:
-XGC:gencon -xms:64m -Xmx:64m myClass
2.设置最大堆尺寸
可以通过-Xmx:m来设置最大堆尺寸。在IA32构架下,由于操作系统给每个进程的最大内存寻址空间为1.8G,因此最大堆尺寸不能超过1.8G。在IA64构架下,就没有1.8G的限制。
如果你的JAVA应用程序在运行时出现了Out of memory的错误,你就需要调大最大堆尺寸。如果没有设置最大堆尺寸,则缺省值为:
1. 如果设置了-Xgc:gencopy,由最大堆尺寸是min{400, 物理内存*75%};
2. 如果没有设置-Xgc:gencopy,由最大堆尺寸是min{1536, 物理内存*75%};
最好手工把最大堆尺寸设置为物理内存(1024M)的75%:
-Xgc:gencon -xms:64m -Xmx:768m myClass
3.设置Nursery的尺寸
可以使用-Xns:来设置Nursery的尺寸,我们要在保证垃圾回收停顿时间(garbage collection-pause)尽可能短的同时,尽量加大Nursery的尺寸,这在创建了大量的临时对象时尤其重要。缺省值为:
1. 对于-Xgc:gencopy,缺省的Nursery大小为320KB/CPU,对于10个CPU的系统来说,Nursery大小为3200KB(3.2M)
2. 对于-Xgc:gencon,缺省的Nursery大小为10M/CPU,对于10个CPU的系统来说,Nursery大小为100M
4.定义内存空间的清理时机
可以使用-Xcleartype:来定义已经被垃圾回收的内存空间在什么时候可以被清理,支持以下三种方式:
1. gc,在垃圾回收的同时清理内存;
2. local,在分配了一块thread-local区域时清理内存,仅在把参数-Xallocationtype设置成local时才有用;
3. alloc,在这块内存被分配给其它对象时清理。在IA64上目前还不支持。
缺省值为:
1. IA32上缺省值为alloc
2. IA64上缺省值为gc
5.定义线程分配的类型
可以使用-Xallocationtype:来定义线程分配的类型。
1. global,在最大堆尺寸比较小时(小于128M)或者应用程序大量使用了线程时使用。
2. local,在最大堆尺寸比较大时(大于128M)或者应用程序少量使用了线程时使用。
缺省值:
1. 如果设置了-Xgc:gencopy,缺省值为global
2. 如果设置了-Xgc:siglecon,-Xgc:gencon和-Xgc:parallel,缺省值为local
6.定义线程栈尺寸
可以使用-Xss[k|K][m|M]来定义线程栈大小。最小线程尺寸定义如下:
1. thin threads:最小线程栈尺寸为8K,缺省为64K;
2. native threads:最小线程栈尺寸为16K
如果-Xss设置小于最小值,则自动使用最小值。
缺省值:
1. IA32系统,WIN32:64K,linux32:128K
2. IA64系统,WIN64:320K,LINUX64:1M

二.Basic Tuning Tips and Techniques
尽管JRockit提供了一组缺省的OOTB配置选项,但最好根据实际应用情况来对JRockit作一些调整。
1.决定你要在哪方面调优
要考虑的因素有:
1. 要为JRockit分配多少内存空间;
2. 你要调优的目的是什么,是要得到更好的响应性还是更好的性能;
2.设置堆尺寸
对于堆尺寸来说,当然是越大越好了。如果设得不够大,就会造成Out-of-memory和内存分页错。如果同时运行了多个应用程序,建议把最小和最大堆尺寸设置成一样大。
3.在高响应性方面的调优
要得到更好的响应性能,应该设置
1. 使用并发垃圾回收器。-Xgc:gencon
2. 设置初始和最大堆大小。-Xms512m,-Xmx768m,由于使用了并发垃圾回收器,所以堆大小不会造成长时间的等待。
3. 设置nursery尺寸。如果用到了大量的临时对象,则需要适当的调大nursery尺寸。调大nursery尺寸会导致垃圾回收的停顿时间加长,因此要注意,确保垃圾回收的停顿时间在可忍受的范围内,这个停顿时间可以通过设置-Xgcpause来查看。
4.在高性能方面的调优
如果要得到更好的性能,你应该:
1. 选用并行垃圾回收器,由于并行垃圾回收器不使用nursery,因此你不必再设置-Xns,方法是加上-Xgc:parallel
2. 把初始和最大堆尺寸设置调到尽可能的大。方法是-Xms512m, -Xmx768m。
5.分析垃圾回收和停顿时间
1. 使用-Xgcreport生成报表,显示垃圾回收的统计信息,从中可以看出你是不是最有效地使用了垃圾回收器。
2. 使用-Xverbose:memory来显示在运行期间每一次垃圾回收的停顿时间。本选项仅用于调试,会产生大量的控制台输出。
6.调整线程选项
当大量地使用了线程时(超过100个),需要调整线程选项:
1. 使用thin线程选项。-Xthinthreads。瘦线程模式在LINUX下非常有效。注意:瘦线程在JRockit中只是一个试验选项,不推荐广泛使用;
2. 关闭本地分配线程的选项。-Xallocationtype:global。每个本地线程区都要消耗大约2K的内存,如果大量地使用了线程,本地线程不但会造成内存空间浪费,而且还会造成堆碎片。使用全局线程机制会减少堆碎片,但在内存分配方面速度要慢一些。
7.分析并改善应用程序设计
找出瓶颈方法:
1. 使用Intel VTune工具
2. 使用-Xjvmpi:allocs=off,monitors=off,entryexit=off选项。

三.Command Line Options by Name
启动JRockit时,可以带一些-X选项,这些选项是非JVM标准的,专门用于配置JRockit的性能。
选项 描述
-X
显示扩展Java选项

-Xallotype

-Xallocationtype
可取值global和local,定义使用本地线程还是全局线程。

-Xbootclasspath
指定类搜索路径,可以是ZIP和jar文件,以;或:分隔

-Xcleartype
定义内存清理时机,可取值gc, local, alloc。gc表示在垃圾回收时清理内存;local表示时分配一块local线程区时清理;alloc表示内存区要被分配给其它对象时清理

-Xgc
选择要使用的垃圾回收器的类型,可取值:

gencopy:generational copying

singlecon:single spaced concurrent,单空间并发

gencon:generational concurrent

parallel:parallel

如果-Xmx小于128M,缺省使用gencopy,否则使用gencon

-Xgcpause
打印由垃圾回收器造成的停顿时间

-Xgcreport
打印垃圾回收报表

-Xjvmpi
是否允许JVMPI事件,这些事件有:

entryexit(缺省ON)

allocs(缺省ON)

monitors(缺省ON)

arenasdelete(缺省OFF)

-Xmanagement
激活JVM中的管理服务器,在JVM的管理控制台能连接到它之前,必须先激活。

-Xms
设置初始堆大小,单位有K、M、G

-Xmx
设置最大堆大小,单位有K、M、G

-Xnativethreads
使用本地线程系统,这是缺省选项

-Xnoclassgc
禁止对类作垃圾回收

-Xnohup
告诉JRockit,忽略CTRL_LOGoFF_EVENT和SIGHUP事件

-Xns
设置nursery尺寸,单位有K、M、G

-Xss
设置线程栈尺寸,单位有K、M、G

-Xthinthreads
使用JRockit的高性能线程系统,在IA64上不可用。

-Xverbose
让JRockit打印更多的信息,可选的参数有:

codegen、cpuinfo、gc、load、memory、Opt

-Xverify
作完整的bytecode一级的校验



四.用JRockit8.1中的Method Profiler调优WebLogic
1.关于Method Profiler工具
BEA WebLogic JRockit 8.1提供了一个Profiling工具:Method Profiler来调优WebLogic应用。
2.利用Method Profiler调优WebLogic应用
JRockit 8.1所带的Method Profiler工具能够将所有在JRockit Java虚拟机上执行的成员方法的调用次数、执行的总时间和每次调用的执行时间都统计出来。这样的功能一来可以让我们对跑在WebLogic上的应用进行tuning(代码级的),二来也大大方便了我们确定系统瓶颈在何处。这也可以说是JRockit JVM相对于其他JVM在功能上的一大优势。


screen.width-333)this.width=screen.width-333;">
在一次对WebLogic Server 8.1的压力测试中,对一组包含了CMP特性的样本进行压力测试时,就利用JRockit的Method Profiler诊断出了系统的瓶颈所在,现介绍如下。CMP这组样本中原先对CMP Entity Bean的操作除了用ejbCreate插入一条记录之外,紧跟着用setName方法设置其name属性,即UPDATE其对应数据库记录中name域的值,代码如下:
public void ejbCreate() //Stateful4CMPBean中的方法
throws CreateException
{
try
{
Context ctx = new InitialContext();
SheepHome home = (SheepHome)ctx.lookup("Sheep");
Sheep sheep = null;
int x = getNextId(); // getNextId()也包含对数据库的操作
sheep = home.create(x);
if(sheep != null)
{
sheep.setName("sheep1".concat(String.valueOf(String.valueOf(x))));
m_strMsg = "create sheep".concat(String.valueOf(String.valueOf(x)));
} else
{
m_strMsg = "The sheep name is not created.";
}
}
catch(Exception e)
{
m_strMsg =
"*** some exception occured! (CMP) ".concat(String.valueOf(String.valueOf(e.getMessage())));
}
}
此时测出来的数据,TPS平均值非常低,且测试时Response Time总是随着时间的增长几乎呈线性攀升。于是用Method Profiler进行诊断:
(1) 在JRockit的启动参数中加入-Xmanagement,以便启动JRockit的时候同时启动其Management Server。
(2) 启动JRockit Management Console,并且将其连接到启动了的Management Server上。(在做压力测试时用JRockit Management Console进行观察对性能的损耗可以忽略不计)
(3) 在JRockit Management Console中,将ToolsàPreferences菜单中的Mode of operation属性设为developer。
(4) 在Method Profiler属性页中添加你所需要观察的类的成员方法。
(5) 按Start按钮让Method Profiler开始进行统计。
Time/Inv(ns)指标的显示结果表明Stateful4CMPBean.ejbCreate()代码所含逻辑成为了系统的瓶颈。结果又显示getNextId()和home.create()操作消耗的时间只占Stateful4CMPBean.ejbCreate()的一小部分,而sheep.setName()操作消耗的时间却占了Stateful4CMPBean.ejbCreate()的剩下的(指除去getNextId()和home.create()操作消耗的时间)绝大部分。
于是又用Method Profiler作了一系列实验,结果如下:用1个用户做压力测试,sheep.setName()操作消耗的时间为X,getNextId()操作消耗的时间为Y,home.create()操作消耗的时间为Z;用2个用户做压力测试,sheep.setName()操作消耗的时间约为2X,getNextId()操作消耗的时间约为Y,home.create()操作消耗的时间约为Z;用3个用户做压力测试,sheep.setName()操作消耗的时间约为3X,getNextId()操作消耗的时间约为Y,home.create()操作消耗的时间约为Z。可以比较肯定地判断,sheep.setName()执行的是一个串行化的逻辑。检查Oralce中UPDATE的ISOLATION-LEVEL,果然为SERIALIZABLE。
将sheep.setName("sheep1".concat(String.valueOf(String.valueOf(x)))); 这句代码删掉。
重新测试,TPS平均值有很大幅度的提高,Response Time在压力测试开始一段时间后也趋于平稳,几乎呈水平线走势。

以上是“BEA WebLogic JRockit中如何使用和性能调优”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: BEA WebLogic JRockit中如何使用和性能调优

本文链接: https://www.lsjlt.com/news/233382.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • BEA WebLogic JRockit中如何使用和性能调优
    这篇文章主要介绍BEA WebLogic JRockit中如何使用和性能调优,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.JRockit调优简介JRockit是一个自适应的JVM,它能够自动调整自己去适应底层硬件...
    99+
    2023-06-03
  • 如何在MySQL中进行性能优化和调优
    有几种方法可以在MySQL中进行性能优化和调优: 使用合适的索引: 索引可以加快查询的速度。确保在经常使用的列上创建索引,并避免...
    99+
    2024-04-09
    MySQL
  • 在AmazonAurora中如何进行性能调优和优化
    Amazon Aurora是一种关系型数据库服务,旨在提供高性能、高可靠性和可扩展性。要进行性能调优和优化,可以按照以下步骤进行: ...
    99+
    2024-04-09
    AmazonAurora
  • SQLServer中如何进行性能监视和调优
    SQL Server 中进行性能监视和调优可以通过以下几种方法: 使用 SQL Server Management Studio...
    99+
    2024-04-09
    SQLServer
  • 如何使用MySQL进行日志分析和性能调优?
    如何使用MySQL进行日志分析和性能调优?导语:MySQL是一种常见且强大的关系型数据库管理系统,被广泛应用于各种网站和应用程序中。本文将介绍如何使用MySQL的日志功能进行分析,并提供一些性能调优的方法和示例代码。一、MySQL的日志功能...
    99+
    2023-10-22
    MySQL 性能调优 日志分析
  • MariaDB中如何进行性能优化调优
    MariaDB 是 MySQL 的一个分支,因此在进行性能优化调优时,可以遵循类似的步骤。以下是一些常见的性能优化调优方法: 使...
    99+
    2024-04-02
  • JVM性能调优监控工具如何使用
    这篇文章主要讲解了“JVM性能调优监控工具如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM性能调优监控工具如何使用”吧!   现实企业级Jav...
    99+
    2024-04-02
  • 如何在MariaDB中进行性能优化和调试
    在MariaDB中进行性能优化和调试可以采取以下几种方法: 使用性能分析工具:MariaDB提供了一些性能分析工具,如EXPLAI...
    99+
    2024-04-09
    MariaDB
  • Cacti系统如何进行性能优化和调优
    Cacti 是一个用于监控网络设备和服务器性能的图形化工具,为了提高其性能和效率,可以进行以下优化和调优操作: 数据库优化:Ca...
    99+
    2024-03-15
    Cacti
  • 如何调优jQuery的性能
    这篇文章将为大家详细讲解有关如何调优jQuery的性能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建性能测试关于性能测试的第一步是创建一个合适的性能测试...
    99+
    2024-04-02
  • openSUSE中如何调整系统性能设置和优化
    在 openSUSE 中调整系统性能设置和优化可以通过以下几种方法: 使用 YaST 控制中心:YaST 是 openSUSE ...
    99+
    2024-04-02
  • Weblogic中如何使用Servlet
    这篇文章主要介绍Weblogic中如何使用Servlet,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!以下操作有些是本来可以在console中完成的,但是由于目前console有些问题,故我们这里直接改动相关文件,以...
    99+
    2023-06-03
  • MariaDB中如何进行查询优化和性能调整
    要在MariaDB中进行查询优化和性能调整,可以采取以下几种方法: 使用合适的索引:通过为经常查询的字段添加索引,可以加快查询速度...
    99+
    2024-04-09
    MariaDB
  • 如何使用 Go 调度器优化 Goroutine 的性能?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • C#中如何使用性能测试工具和性能优化技巧
    C#中如何使用性能测试工具和性能优化技巧,需要具体代码示例性能优化在软件开发过程中起着非常重要的作用,它可以提高系统的性能、运行速度和响应能力。C#是一种高性能的编程语言,也有许多性能优化技巧和工具可以帮助我们更好地利用C#的优势。本文将介...
    99+
    2023-10-22
    性能优化技巧 C#性能测试工具
  • 如何在PHP项目中进行性能调优和资源优化?
    如何在PHP项目中进行性能调优和资源优化?随着互联网的高速发展,越来越多的应用程序采用了PHP作为开发语言。由于PHP的易用性和灵活性,许多开发人员选择使用它来构建自己的网站和应用程序。然而,由于PHP的动态特性和解释性质,一些开发人员可能...
    99+
    2023-11-03
    性能调优 PHP项目 资源优化
  • 如何监控和调优Oracle的性能指标
    监控和调优Oracle性能指标是保障数据库系统正常运行的重要工作。以下是一些常用的方法: 监控工具:Oracle提供了多种监控工...
    99+
    2024-04-09
    Oracle
  • 如何对Graylog进行性能调优和扩展
    要对Graylog进行性能调优和扩展,可以考虑以下几个方面: 调整Graylog的配置:可以通过修改Graylog的配置文件来调...
    99+
    2024-04-02
  • 如何在 PHP 和 JavaScript 中使用 Spring 优化 API 性能?
    随着互联网应用的不断发展,API已经成为了我们日常开发中不可或缺的一部分。在API的开发中,性能是我们最为关注的问题之一。Spring框架是一个非常强大的框架,它可以帮助我们优化API的性能,特别是在PHP和JavaScript中使用Sp...
    99+
    2023-11-03
    javascript spring api
  • Java多线程异步调用性能如何调优
    这篇文章主要介绍“Java多线程异步调用性能如何调优”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java多线程异步调用性能如何调优”文章能帮助大家解决问题。概述大型电商公司的支付聚合服务都有这类的...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作