性能测试三十二:监控之Java线程监控

摘要:
线程的五种状态*新:新*运行:可运行*等待:等待(无限期)、定时等待(截止时间等待)*阻塞:阻塞*结束:终止线程的两种监视方法。一个是jvisualvm。在图形界面监视之前,向jvm添加监视参数。在tomcat和catalina的bin目录中。sh文件,在第二行添加JAVA _ OPTS=“-Dcom.sun.management

性能测试三十二:监控之Java线程监控第1张

线程的五种状态
* 新建: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下都添加这行参数,且端口号不重复

性能测试三十二:监控之Java线程监控第2张

性能测试三十二:监控之Java线程监控第3张

性能测试三十二:监控之Java线程监控第4张

保存并重启tomcat

性能测试三十二:监控之Java线程监控第5张

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

性能测试三十二:监控之Java线程监控第6张

或者

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

性能测试三十二:监控之Java线程监控第7张

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

性能测试三十二:监控之Java线程监控第8张

配置ip

性能测试三十二:监控之Java线程监控第9张

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

性能测试三十二:监控之Java线程监控第10张

填写端口号

性能测试三十二:监控之Java线程监控第11张

性能测试三十二:监控之Java线程监控第12张

命令行执行netstat -an|grep 10086

性能测试三十二:监控之Java线程监控第13张

性能测试三十二:监控之Java线程监控第14张

查看线程

性能测试三十二:监控之Java线程监控第15张

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

性能测试三十二:监控之Java线程监控第16张

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

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

性能测试三十二:监控之Java线程监控第17张

性能测试三十二:监控之Java线程监控第18张

性能测试三十二:监控之Java线程监控第19张

每一段这种就是一个线程

性能测试三十二:监控之Java线程监控第20张

构建几个场景看看

性能测试三十二:监控之Java线程监控第21张

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

1:runnable

java -jar thread-test.jar 1

性能测试三十二:监控之Java线程监控第22张

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

性能测试三十二:监控之Java线程监控第23张

性能测试三十二:监控之Java线程监控第24张

性能测试三十二:监控之Java线程监控第25张

性能测试三十二:监控之Java线程监控第26张

2:waitting

java -jar thread-test.jar 2

性能测试三十二:监控之Java线程监控第27张

性能测试三十二:监控之Java线程监控第28张

3:timedWaitting

java -jar thread-test.jar 3

性能测试三十二:监控之Java线程监控第29张

性能测试三十二:监控之Java线程监控第30张

4:blocked

java -jar thread-test.jar 4

性能测试三十二:监控之Java线程监控第31张

性能测试三十二:监控之Java线程监控第32张

免责声明:文章转载自《性能测试三十二:监控之Java线程监控》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇webpack 构建多页面应用初探Qt开源作品31-屏幕截图控件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux获取线程tid线程名

Linux获取线程tid线程名 1 2 3 4 5 6 //thread name char cThreadName[32] = {0}; prctl(PR_GET_NAME, (unsigned long)chThreadName); //tid syscall(SYS_gettid)...

操作系统: 用户级线程和内核级线程

http://www.cnblogs.com/yxzfscg/p/4758728.html 三种线程——内核线程、轻量级进程、用户线程 内核线程 内核线程就是内核的分身,一个分身可以处理一件特定事情。这在处理异步事件如异步IO时特别有用。内核线程的使用是廉价的,唯一使用的资源就是内核栈和上下文切换时保存寄存器的空间。支持多线程的内核叫做多线程内核(Mult...

C#多线程中等待线程池中的所有线程执行完毕后再执行下一个线程

网上找的,做个笔记记录一下。 有这么一个需求,就是巡检多台服务器是否都在线,点击巡检按钮后,按行读取DataGridView中的数据,并启行线程执行,这时会存在多个线程同时运行,但是什么时候给出用户提醒,说都巡检完成了呢,需要用到一个线程状态的检测。 最后的效果是这样子的,多个线程对表格按行进行服务器的巡检,只有等所有的巡检线都结束后,等待线程才会弹出一个...

ThreadLocal工具类 隔离思想

ThreadLocal不是用来解决共享对象的多线程访问问题的, 通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象,其他线程不需要去访问,也是访问不到的。各个线程中的ThreadLocal.ThreadLocalMap以及ThreadLocal.ThreadLocal中的值...

多线程并发详解

一、Java 线程实现/创建方式   注意:   • 新建的线程不会自动开始运行,必须通过start( )方法启动   • 不能直接调用run()来启动线程,这样run()将作为一个普通方法立即执行,执行完毕前其他线程无法并发执行   • Java程序启动时,会立刻创建主线程,main就是在这个线程上运行。当不再产生新线程时,程序是单线程的  1.1 继承...

【转】JMeter学习(三十二)属性和变量

一、Jmeter中的属性: 1、JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性 2、JMeter属性在测试脚本的任何地方都是可见的(全局),通常被用来定义一些JMeter使用的默认值,可以用于在线程间传递信息。 3、JMeter属性可以在测试计划中通过函数 _P 进行引用,但是不能作为特定线程的变量值...