[转帖]BEA WebLogic JRockit的使用和性能调优_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3764 | 回复: 0   主题: [转帖]BEA WebLogic JRockit的使用和性能调优        下一篇 
root
注册用户
等级:中尉
经验:470
发帖:31
精华:1
注册:2013-2-22
状态:离线
发送短消息息给root 加好友    发送短消息息给root 发消息
发表于: IP:您无权察看 2013-2-27 9:22:11 | [全部帖] [楼主帖] 楼主

一.JRockit调优简介
JRockit

一个自适应

的JVM

,它能够

自动

调整自己去适应底层硬件,因此对它的调优主要集中在一些需要人工干预的

参数

上,比如说:需要划分多少RAM给JRockit使用等。JRockit有一组非标准的-X启动选项,我们可以用它来调节JVM。JRockit有两组主要的子

系统

可以被优化--

内存管理

系统

(包括垃圾回收)和

线程

系统

。在

内存管理

系统

方面,有很多调优的工作可以做。
二.TuningWebLogicJRockit JVM
1.

设置

初始堆尺寸
可以通过-Xms:<size>m来

设置

初始堆大小,如果-Xmx的值小于128MB,则-Xms缺省取值为16MB;如果-Xmx

设置

大于128MB,则-Xms缺省值为物理内存的25%,最大不超过64M。例子:

-Xgc:gencon -xms:64m -Xmx:64m myClass


2.

设置

最大堆尺寸
可以通过-Xmx:<size>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:<size>来

设置

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:<gc local alloc>来定义已经被垃圾回收的内存空间在什么时候可以被清理,支持以下三种方式:
1. gc,在垃圾回收的同时清理内存;
2. local,在分配了一块thread-local区域时清理内存,仅在把

参数

-Xallocationtype

设置

成local时才有用;
3. alloc,在这块内存被分配给其它对象时清理。在IA64上目前还不支持。
缺省值为:
1. IA32上缺省值为alloc
2. IA64上缺省值为gc
5.定义

线程

分配的类型
可以使用-Xallocationtype:<global local>来定义

线程

分配的类型。
1. global,在最大堆尺寸比较小时(小于128M)或者

应用程序

大量使用了

线程

时使用。
2. local,在最大堆尺寸比较大时(大于128M)或者

应用程序

少量使用了

线程

时使用。
缺省值:
1. 如果

设置

了-Xgc:gencopy,缺省值为global
2. 如果

设置

了-Xgc:siglecon,-Xgc:gencon和-Xgc:parallel,缺省值为local
6.定义

线程

栈尺寸
可以使用-Xss<size>[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一级的校验
来自:http://ons.javaeye.com/blog/417149

该贴被root编辑于2013-2-27 9:34:30




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论