前言

因为最近一个项目部署在客户那边运行一个月左右就会出现java内存溢出的问题,为了时时监控java内存的情况需要,需要远程查看服务器上java内存的一些情况。在公司模拟部署了远程监视linux下项目运行的情况。

一、简单介绍两个jdk1.6自带的可视化监视工具
    Jconsole:Java 6.x采用JMX方式提供了一系列监视和管理虚拟机的API,随SDK一起发布的JConsole则是采用这些API实现监控虚拟机的使用工具。 JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。

JVisualVM: 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。

二,如果是win系列的电脑查看本机的内存情况,直接找到jdk的安装路径双击上面提到的可视化监视工具即可

三,如果是想监视远程的java内存的情况可要做一些相应的配置

  1. 运行环境
                  服务器:Redhat6.0 + JDK 1.6+ Jboss 5.1 
                  ip地址:192.168.1.250
                  客户机:Windows + JDK 1.6

2.   不带用户名密码的参数配置(很简单),只需要修改jboss中bin下的run.sh。在该句下边添加上红色字迹的部分即可

JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
                JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.port=9999"   
                JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.authenticate=false"   
                JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.ssl=false"   
                JAVA_OPTS="$JAVA_OPTS   -Djava.rmi.server.hostname=192.168.1.250"

注意:
                 1、9999表示监控的端口号,确保指定的端口不被占用;
                 2、可以采用netstat -an来查看已经占用的端口;
                 3、配合lsof -i:portnum 来查看占用端口的具体应用程序;
                 4、另外如果开启了防火墙服务,请确保端口能够透过防火墙访问;

5、192.168.1.250为当前服务器的IP;

3.   启动JBoss服务器

./run.sh -b 192.168.1.250  & 必须通过-b参数指定Jboss服务器绑定的地址;
               允许所有用户连接 则为 -b 0.0.0.0

4,    连接远程虚拟机

启动本机%JAVA_HOME%\bin目录下的JConsole,
               在弹出对话框的“远程进程:”一栏中,输入192.168.1.250:9999,然后点击“连接”,如下图所示:

附加:带用户名密码的参数配置

一,修改jboss中bin下的run.sh。在该句下边添加上红色字迹的部分

JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"
                         JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.port=9999"  
                         JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.authenticate=true"  
                         JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.ssl=false"   
                         JAVA_OPTS="$JAVA_OPTS   -Djava.rmi.server.hostname=192.168.1.250"
                         JAVA_OPTS="$JAVA_OPTS   -Dcom.sun.management.jmxremote.password.file=/usr/java/jdk1.6/jre/lib/management/jmxremote.password"

注意 $JAVA_HOME/jre/lib/management/jmxremote.password  中 jmxremote.password是由原来的jmxremote.password.template复制一份得到,

去掉 monitorRole  QED前面的#   如果不做修改  登入的用户名:monitorRole 密码:QED   (可根据需要修改用户名密码,但是如果做修改也要同

是修改jmxremote.access中的相对应名字的权限

二,如果启动过程中出现这个问题或者错误

则是因为jmxremote.password 的权限问题   在该文件路径下执行:chmod  600 jmxremote.password

重新按照3启动项目即可。

四,对于JVisualVM而言在  树结构的  Remote中添加远程ip,然后右键该ip添加JMX链接添加上端口号和用户名密码即可链接成功,如图所示:

远程监视jboss应用java内存的配置的更多相关文章

  1. 远程监视jboss应用java内存的配置(实测) .

    前言 因为最近一个项目部署在客户那边运行一个月左右就会出现java内存溢出的问题,为了时时监控java内存的情况需要,需要远程查看服务器上java内存的一些情况.在公司模拟部署了远程监视linux下项 ...

  2. Java内存回收优化及配置

    原文链接:http://eol.cqu.edu.cn/eol/jpk/course/preview/jpkmaterials_folder_txtrtfview.jsp?resId=23156& ...

  3. JAVA JVM常见内存参数配置简析

    JVM常见内存参数配置简析   常见参数 -Xms .-Xmx.-XX:newSize.-XX:MaxnewSize.-Xmn(-XX:newSize.-XX:MaxnewSize) 简析 1.-Xm ...

  4. JVM参数配置 java内存区域

    java内存区域 一些基本概念 http://www.importnew.com/18694.html https://www.cnblogs.com/wangyayun/p/6557851.html ...

  5. Java内存泄露监控工具:JVM监控工具介绍

    本文将对JVM监控工具jstack, jconsole, jinfo, jmap, jdb, jstat进行详细的介绍,具体内容请看下文 Sun JDK监控和故障处理工具 名称 主要作用 jps JV ...

  6. IDEA安装使用 VisualVM 及VisualVM 远程监视

    1. VisualVM是什么 按照VisualVM官网(http://visualvm.github.io/)上的介绍,VisualVM是一个集成命令行JDK工具和轻量级分析功能的可视化工具.专为开发 ...

  7. Java内存泄露监控工具:JVM监控工具介绍【转】

    jstack?-- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程 ...

  8. java内存溢出分析工具:jmap使用实战

    在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap. 1 使用命令 在环境是linux+jdk1.5以上,这个工具是自带的,路径在JDK_HOME/bin/下 jmap -h ...

  9. 如何排查Java内存泄漏?看完我给跪了!

    没有经验的程序员经常认为Java的自动垃圾回收完全使他们免于担心内存管理.这是一个常见的误解:虽然垃圾收集器做得很好,但即使是最好的程序员也完全有可能成为严重破坏内存泄漏的牺牲品.让我解释一下. 当不 ...

随机推荐

  1. NiftyDialogEffects-多种弹出效果的对话框

    感觉系统自带的对话框弹出太生硬?那就试试NiftyDialogEffects吧,类似于(Nifty Modal Window Effects),效果是模仿里面实现的 ScreenShot  .  .  ...

  2. nginx添加多站点

    1.登陆服务器2.修改ngnix配置文件3.重启ngnix4.测试是否添加成功 修改/nginx/conf/nginx.confviminclude /alidata/server/nginx/con ...

  3. 一、php开始篇

    4种编码习惯<?php echo 'hello world';?> <? echo 'hello world';?> <% echo 'hello world';%> ...

  4. node服务端搭建学习笔记

    咳咳,终于迈出这一步了...这篇文章将是边学边写的真正笔记...用于mark下学习过程中的点滴~ 开篇先把我学习参考的文章来源给出,以表示对前人的尊敬: https://github.com/nswb ...

  5. 解惑《你必须知道的.net》——C#继承关系中【方发表】的创建和调用

    前言: 现在正在读<你必须知道的.net>(第二版)一书,看到IL语言那一章,将call.callvirt和calli时候,书中举了一个例子,是一个三层继承的例子,我一开始看的时候就有点懵 ...

  6. 代码查看php是否已开启rewrite功能模块

    通过php代码来查询,是否把rewrite模块打开了 <?php $result = apache_get_modules(); if(in_array('mod_rewrite', $resu ...

  7. SC Create 创建一个Windows系统服务 转

        转自:http://www.360doc.com/content/13/0428/09/7555793_281451268.shtml sc create Serv-U binpath= &q ...

  8. springboot 源码笔记

    1.springAppication构造器 基于getSpringFactoriesInstances方法构造如下类(获取文件内容在META-INF/spring.factories文件中) 1.1 ...

  9. mybatis 小结

    1.  根据后台list 在SQL中使用到In的时候 <if test="sbidList != null and sbidList.size() > 0"> A ...

  10. iOS 关于Xcode上的Other linker flags

    Targets选项下有Other linker flags的设置,用来填写XCode的链接器参数,如:-ObjC -all_load -force_load等.还记得我们在学习C程序的时候,从C代码到 ...