存档

文章标签 ‘jvm’

use Volano对jvm的性能进行测试

2008年7月13日 评论已被关闭

使用Volano对jvm性能测试

网络测试报告:
http://www.volano.com/report/index.html

一、以下是2hei的测试情况:
原理:
启动volano server 会根据jdk的版本来设定默认的jvm值,然后启动简化版的Tomcat,并部署VolanoChat聊天系统;
启动客户端对VolanoChat进行连接,客户端模拟聊天者并发发送大量的消息,来测试jvm的性能。

使用JDK1.6

设定1.6的环境变量
export JAVA_HOME=/home/jdk1.6.0_06
export PATH=$JAVA_HOME/bin:$PATH

启动server:

./loopserver.sh sun16
java version “1.6.0_06”
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)

/home/jdk1.6.0_06/bin/java -server -Xmx64m -Dinstall.root=. -Dcatalina.home=. -cp .:lib/bootstrap.jar:lib/catalina.jar:lib/naming-common.jar:lib/naming-resources.jar:lib/servlet.jar:lib/servlets-common.jar:lib/servlets-default.jar:lib/volanochat-server.jar:lib/xerces.jar COM.volano.Main

VolanoChat(TM) Server Version 2.5.0.9
Copyright (C) 1996-2002 Volano LLC.  All rights reserved.
Loading server properties from “/home/www.2hei.net/soft/voooo/conf/properties.txt”.
www.2hei.net:8000  VolanoChatPro – unlimited connections.
Apache Tomcat/4.0.3

启动client,对server进行压力测试
./loopclient.sh sun16

ulimit -Sn = 1024

java version “1.6.0_06”
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)

/home/jdk1.6.0_06/bin/java -server -Xmx64m -Dinstall.root=. -Dcatalina.home=. -cp .:lib/bootstrap.jar:lib/catalina.jar:lib/naming-common.jar:lib/naming-resources.jar:lib/servlet.jar:lib/servlets-common.jar:lib/servlets-default.jar:lib/volanochat-server.jar:lib/xerces.jar COM.volano.Mark -run

执行结果:
java.vendor        = Sun Microsystems Inc.
java.vendor.url    = http://java.sun.com/
java.version       = 1.6.0_06
java.class.version = 50.0
java.compiler      = null
os.name            = Linux
os.version         = 2.6.9-67.0.15.ELsmp
os.arch            = i386

VolanoMark version = 2.5.0.9
Messages sent      = 20000
Messages received  = 380000
Total messages     = 400000
Elapsed time       = 12.862 seconds
Average throughput = 31099 messages per second

使用JDK1.4:

设定1.4的环境变量
export JAVA_HOME=/home/j2sdk1.4.2_17
export PATH=$JAVA_HOME/bin:$PATH

./loopserver.sh sun14
ulimit -Sn = 1024

java version “1.4.2_17”
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_17-b06)
Java HotSpot(TM) Server VM (build 1.4.2_17-b06, mixed mode)

/home/j2sdk1.4.2_17/bin/java -server -Xmx64m -Dinstall.root=. -Dcatalina.home=. -cp .:lib/bootstrap.jar:lib/catalina.jar:lib/naming-common.jar:lib/naming-resources.jar:lib/servlet.jar:lib/servlets-common.jar:lib/servlets-default.jar:lib/volanochat-server.jar:lib/xerces.jar COM.volano.Main

VolanoChat(TM) Server Version 2.5.0.9
Copyright (C) 1996-2002 Volano LLC.  All rights reserved.
Loading server properties from “/home/www.2hei.net/soft/voooo/conf/properties.txt”.
www.2hei.net:8000  VolanoChatPro – unlimited connections.
Apache Tomcat/4.0.3

./loopclient.sh sun14
ulimit -Sn = 1024

java version “1.4.2_17”
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_17-b06)
Java HotSpot(TM) Server VM (build 1.4.2_17-b06, mixed mode)

/home/j2sdk1.4.2_17/bin/java -server -Xmx64m -Dinstall.root=. -Dcatalina.home=. -cp .:lib/bootstrap.jar:lib/catalina.jar:lib/naming-common.jar:lib/naming-resources.jar:lib/servlet.jar:lib/servlets-common.jar:lib/servlets-default.jar:lib/volanochat-server.jar:lib/xerces.jar COM.volano.Mark -run

执行结果:
java.vendor        = Sun Microsystems Inc.
java.vendor.url    = http://java.sun.com/
java.version       = 1.4.2_17
java.class.version = 48.0
java.compiler      = null
os.name            = Linux
os.version         = 2.6.9-67.0.15.ELsmp
os.arch            = i386

VolanoMark version = 2.5.0.9
Messages sent      = 20000
Messages received  = 380000
Total messages     = 400000
Elapsed time       = 15.739 seconds
Average throughput = 25415 messages per second

二、测试结论:

在同等的硬件配置及操作系统下,测试每次都发送400000条数据,从执行时间和吞吐量上看jdk1.6的性能要比jdk1.4的高一些,
如吞吐量分别是每秒31099,25415。

 

网上其他的关于jdk性能的比较

下面是sun对与J2SE 1.4.2 和J2SE 5.0的性能比较

http://java.sun.com/performance/reference/whitepapers/5.0_performance.html

sun五个升级到jdk1.5的原因。  比如性能优化,稳定性优化,还有64位的支持等等

http://java.sun.com/developer/technicalArticles/J2SE/5reasons.html

分类: java 标签: ,

使用Jconsole对java的内存使用情况(JVM)进行监控

2008年7月10日 评论已被关闭

 

JDK1.5提供JMX remote的管理工具Jconsole,可以监控Java运行程序的内存使用情况、活动线程数量、类装载的数量、MBeans的状态、虚拟机的各种信息等,还可以执行MBean公开的方法或强制进行垃圾回收。因为Apusic应用服务器实现标准的JMX接口,因此也可以使用Jconsole进行监控。

下面是在windows端对Linux的java应用(Resin)的JVM进行监控。
windows: 安装 jdk1.6.0_06  http://java.sun.com/javase/downloads/index.jsp
Linux:Resin2.1.x + jdk1.6

启动resin ,增加jvm监控的指令:
可以在java启动参数添加,
如: httpd.sh  或者 wrapper.pl 里面
vi http.sh
args=”***” 把 需要启动jvm选项加入。

#指定远程服务器的端口
-Dcom.sun.management.jmxremote.port=12345
#指定远程服务器的用户认证
-Dcom.sun.management.jmxremote.password.file=$JRE_HOME/lib/management/password.properties
-Dcom.sun.management.jmxremote.access.file=$JRE_HOME/lib/management/access.properties

使用密码:
#JRE_HOME/lib/management/jmxremote.password.template
cp jmxremote.password.template password.properties
chmod 600 password.properties
#默认用户名 密码为:
monitorRole QED
controlRole R&D
#默认权限
#cp jmxremote.access access.properties 
#设置权限
monitorRole   readonly
controlRole   readwrite

#也可以使用禁止用户认证
com.sun.management.jmxremote.authenticate=false

也可以使用ssl连接

这里先不用
com.sun.management.jmxremote.ssl=false

说明: 如果没有启动com.sun.management.jmxremote 的配置 , 远程连接会提示:
error during jrmp connection establishment ; nested exception is

如果无法连接有可能是linux服务器的hostname存在问题

#修改hostname
/etc/hosts  把127.0.0.1修改为外网卡IP,如192.168.1.100
还有
/etc/sysconfig/network

#启动resin
$RESIN_HOME/bin/http.sh start
#查看是否已经启动
#ps -x
8681 pts/0    S      0:00 perl bin/wrapper.pl -chdir -name httpd -class com.caucho.server.http.HttpServer -J-server -verbose -Dcom.
8683 pts/0    Sl     0:04 /home/2hei.net/jdk1.6.0_06/bin/java -server -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremo
#查看端口
#netstat -an
tcp        0      0 127.0.0.1:35844             127.0.0.1:35848             ESTABLISHED
tcp        0      0 :::8080                     :::*                        LISTEN
tcp        0      0 :::12345                    :::*                        LISTEN

-Dcom.sun.management.jmxremote.authenticate=false
#是否使用ssl
-Dcom.sun.management.jmxremote.ssl=false”

windows下
jconsole命令在 $JAVA_HOME/bin 下

cmd:\>jconsole
#启动

jvm_6.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

连接远程
192.168.1.100:12345
controlRole R&D

jvm_1.png

 

 

 

 

 

 

 

 

 

 

 

jvm_2.png

 

 

 

 

 

 

 

 

 

 

 

jvm_4.png

 

 

 

 

 

 

 

 

 

 

 

 

参考:
http://java.sun.com/javase/6/docs/technotes/guides/management/jconsole.html

http://java.sun.com/javase/6/docs/technotes/tools/solaris/keytool.html

分类: java, OpenSource 标签: , ,

resin jvm 性能调试

2008年4月7日 评论已被关闭

resin3.1.3+jdk1.6+hibernate+struts

配置了多个域名上去,服务器内存2G,jvm -Xmx使用1536m (1.5G)
每每重新上传了程序后必须要重新启动resin服务,虽然非常确定了类已经编译过去了,
但是hibernate还要重新初始化一下,只要2-3次,服务便会报outOfMemoryError错误。
不知道是java程序写的不好,资源没有释放,还是hibernate占用了太多的内存
如果没有上传新类,则没有outOfMemoryError的情况发生。

郁闷之中,恰好手边来了新的伙计,Dell 2950服务器,四核,4G内存,正好可以测试一下。

配置了一下Java的 Web服务。
我想新机器内存大,今儿个哥们高兴,给丫配个3G看看,谁知Resin居然不给面子,没有起来。
 
以下启动是加载的内存:

      <jvm-arg>-Xmx3072m</jvm-arg>
      <jvm-arg>-Xss1m</jvm-arg>
      <jvm-arg>-Xdebug</jvm-arg>
      <jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg>

网上相关文档有介绍 Max Heap 为内存的70%的。

[2hei.net]# java -Xmx3072m -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

[2hei.net]# java -Xmx2560m -version
java version “1.6.0_03”
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode)

经过几番测试后,感觉4G内存加载的最大内存为2560m,也就是2.5G,再大的话,resin无法启动。

分类: resin 标签: ,