zoukankan      html  css  js  c++  java
  • 远程监视jboss应用java内存的配置(实测) .

    前言

           因为最近一个项目部署在客户那边运行一个月左右就会出现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%in目录下的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链接添加上端口号和用户名密码即可链接成功,如图所示:

                   

     

  • 相关阅读:
    补间动画
    nginx+php的配置
    腾讯QQ首次在PC端采用气泡式聊天界面(from:36kr)
    mysql errno:13
    PHP高级面试题
    Nginx下fastcgi_split_path_info导致CodeIgniter配置问题
    ngx_http_fastcgi_module 的那些事
    PowerShell 定时刷新查看文件内容
    解决 VMWARE MAC 10.12无法全屏的问题
    libcurl 函数curl_easy_perform在release下崩溃的问题
  • 原文地址:https://www.cnblogs.com/firstdream/p/5763849.html
Copyright © 2011-2022 走看看