发布新日志

  • 初探jconsole+weblogic9.2(转)

    2009-12-17 15:19:27

    web 项目使用weblogic9.2做为服务器, 出现了out of memory 问题, 这时就引发了需要监控JVM内存使用情况. 本来一开始使用jprofiler ,但是只能免费10天... 10天能干什么,难道我们程序员就不过周末了??万恶的jprofiler公司. 还好JDK1.5有jconsole.

    步骤:

    1. weblogic服务是"startWebLogic.cmd" 程序来启动的 , 要想连接到jconsole必须设置com.sun.management.jmxremote 参数.

    运行->startWebLogic.cmd -Dcom.sun.management.jmxremote

    或者在快捷方式加上也可以:


    2.运行->jconsole

    3.选择监控服务

    4.OK,连接成功,如下图

    记录一点Out Of Memory 原因:

    堆是应用程序使用的主要部分,一旦堆满,应用程序就会抛出Out Of Memory错误。具体关于堆的构成以及垃圾回收算法,可以参考文档:

    http://aleung.blogbus.com/logs/4712392.html

    这个环节的优化:

    1) 增加JVM内存,使得可使用的堆内存尽可能多,延长垃圾回收的时间。需要注意的是,一般来说,回收1G内存所需要的时间是7秒左右,如果这个时间访问量比高,极容易导致应用停止响应,所以并非是越大内存越好。通过增加XX:+PrintGCDetails参数可以观察到垃圾回收的频率和时间

    2) 调整垃圾回收策略,加快JVM的回收,因为Web应用响应高,很多都是无用内存,加快回收可以保证有效堆会更多,这种方式会消耗更多的CPU。

  • JConsole的使用手册

    2009-11-18 12:06:54

    JConsole毕竟是JDK自带的东西,功能虽然没有一些商业软件那么强大,但是稳定性好,在大压力情况下也不会发生什么问题。而且,提供了相对全面的系统监控功能,还是值得一用的。

    JConsole

    JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。如果要把一个应用以可管理的形式启动,可以在启动是设置com.sun.management.jmxremote。例如,启动一个可以在本地监控的J2SE的应用Java2Demo ,需输入以下命令:

    一、本地方式 
    1、方法1:

    JDK_HOME\bin\java -Dcom.sun.management.jmxremote jarJDK_HOME\demo\jfc\Java2D\Java2Demo.jar

    JDK_HOME需要是一个含有JDK5.0的目录。
    例如:测试例子Java2Demo.jar在D:\Computer\Java\jdk1.5.0_05\demo\jfc\Java2D
    因此命令可以写为:
    D:\Computer\Java\jdk1.5.0_05\bin\java -Dcom.sun.management.jmxremote -jar D:\Computer\Java\jdk1.5.0_05\demo\jfc\Java2D\Java2Demo.jar
    方法2:
    cmd进入dos下,进入到应用程序所在目录,执行语句如下
    java -Dcom.sun.management.jmxremote -jar Java2Demo.jar
    2、启动jdk_home\bin目录下的Jconsole.exe就可以看到有一个本地的连接在里面。点击连接就可以进入相应的监视界面了。 
Open Toolbar