zoukankan      html  css  js  c++  java
  • 性能测试三十二:监控之Java线程监控

    线程的五种状态
    * 新建:new
    * 运行:runnable
    * 等待:waitting(无限期等待),timed waitting(限期等待)
    * 阻塞:blocked
    * 结束:terminated

    线程的两种监控方法
    一,jvisualvm,图形界面的方式
    监控之前先对jvm加监控参数,在tomcat的bin目录下,catalina.sh文件中,第二行添加:
    JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.0.0.9"

    1-改port
    2-改hostname为本机ip

    如果想要监控和多个tomcat,则需要在每一个tomcat下都添加这行参数,且端口号不重复

    保存并重启tomcat

    查看10086的进程是否存在:netstat -an|grep 10086

     

    或者

    查看10086的使用详情:lsof -i:10086

    windows_cmd下,输入(前提,jdk配好环境变量)

    配置ip

     

    在监控的ip上右键_添加JMX连接

    填写端口号

    命令行执行 netstat -an|grep 10086

    查看线程

    二,jstack pid(进程号):命令行方式,打印当前所有的线程及执行状态

     

    由于此命令会直接把内容展示在屏幕上,不好查看,所以最好重定向输出

    如,把结果打印到a.log文件里面:jstack 8743 > a.log

    每一段这种就是一个线程

     构建几个场景看看

    构造线程状态的Java脚本:java -jar thread-test.jar [1|2|3|4]
    构造不同的状态的线程


    1:runnable

    java -jar thread-test.jar 1

    复制一个会话,查看刚刚运行的java的进程

    2:waitting

    java -jar thread-test.jar 2

    3:timedWaitting

    java -jar thread-test.jar 3


    4:blocked

    java -jar thread-test.jar 4

  • 相关阅读:
    Amzon MWS API开发之订单接口
    Amazon 解决下载文件乱码
    分享一个近期写的简单版的网页采集器
    Log4Net使用指南
    C# Log4Net 日志
    C# 获取往控件中拖进的文件或文件夹的信息
    LOG4NET用法(个人比较喜欢的用法)
    WCF传输过大的数据导致失败的解决办法
    .Net Core 微服务学习(四) gRpc
    .Net Core 微服务学习(三): 网关(Gateway)
  • 原文地址:https://www.cnblogs.com/malinalian/p/10583108.html
Copyright © 2011-2022 走看看