zoukankan      html  css  js  c++  java
  • 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-

  • 相关阅读:
    6-Python爬虫-分布式爬虫/Redis
    ES 查询时 排序报错(fielddata is disabled on text fileds by default ... )解决方法
    Intellij Idea webstorm 激活
    Intellij Idea 配置jdk
    java 获取(格式化)日期格式
    js 跳转 XSS漏洞 预防
    CSS去掉背景颜色
    js对象无法当成参数传递 解决方法
    Elasticsearch java api
    java多条件查询SQL语句拼接的小技巧
  • 原文地址:https://www.cnblogs.com/jstarseven/p/8883327.html
Copyright © 2011-2022 走看看