• JVM 监控工具 jstack 和 jvisualvm 的使用


    Java线程状态

    线程的五种状态

    * 新建:new(时间很短)

    * 运行:runnable

    * 等待:waitting(无限期等待),timed waitting(限期等待)

    * 阻塞:blocked

    * 结束:terminated(时间很短)

    Jvm监控工具

    一、jstack

    介绍:

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。
    如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack [-l] pid
    如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
    另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

    使用:

    1、查看运行程序的进程号

    2、jstack dump当前线程状态

    3、根据当前抓取到的信息进行进一步的分析

    二、jvisualvm远程监控tomcat

    1、在 $CATALINA_HOME/bin/startup.sh 倒数第二行(也就是exec "$PRGDIR"/"$EXECUTABLE" start "$@"一行上边)加上如下内容:

    复制代码
    export CATALINA_OPTS="$CATALINA_OPTS
    -Dcom.sun.management.jmxremote
    -Djava.rmi.server.hostname=192.168.1.130
    -Dcom.sun.management.jmxremote.port=7003
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=true
    -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password
    -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access"
    复制代码

    各个参数的说明如下:

    复制代码
    -Dcom.sun.management.jmxremote 启用JMX远程监控
    -Djava.rmi.server.hostname=192.168.1.130  这是连接你的tomcat服务器地址
    -Dcom.sun.management.jmxremote.port=7003  jmx连接端口
    -Dcom.sun.management.jmxremote.ssl=false  是否ssl加密
    -Dcom.sun.management.jmxremote.authenticate=true  远程连接需要密码认证
    -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password  指定连接的用户名和密码配置文件
    -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access  指定连接的用户所拥有权限的配置文件
    复制代码

    2、在$CATALINA_HOME/conf/jmxremote.access里添加可以连接监控的用户名以及权限:

    monitorRole readonly
    controlRole readwrite

    3、在$CATALINA_HOME/conf/jmxremote.password 里添加可以连接监控的用户名以及密码,用户的权限在jmxremote.access里以及配置了:

    monitorRole  111111
    controlRole   222222

    4、修改jmxremote.access和jmxremote.password的权限:

    sudo chmod 600 jmx*

    5、重启tomcat就可以了

    6、在本地的$JAVA_HOME/bin下双击jvisualvm.exe打开如下图:

    7、在远程上右击,添加主机,输入服务器的ip:

    8、在远程主机上右击,添加JMX连接,我的端口号是7003,确定:

    9、这是会提示输入用户名和密码,也就是你在jmxremote.password里设置的用户名和密码:

    10、输入正确的用户名和密码后,链接进去打开连接将会看到如下画面:

    这时就可以查看服务器的资源情况、以及tomcat的线程情况等。


     -END-

  • 相关阅读:
    安装node配置环境变量,解决某组件(如cordova,webpack等)“不是内部命令”问题
    用js控制css属性
    用javascript动态改变网页文字大小
    在无代码文件的aspx文件中添加类、函数和字段的方法
    HBase-0.98.3 如何调整RPC连接的数量
    double类型相等判断 [转]
    Virtual Memory Usage from Java under Linux [转]
    手工释放SWAP空间的方法[转]
    maven配置 指定jdk版本
    maven配置: 生成war的同时生成jar, 并在其他artifact配置依赖于这个jar
  • 原文地址:https://www.cnblogs.com/jstarseven/p/8883327.html
Copyright © 2020-2023  润新知