linux监控线程运行状态,linux查看线程状态--jstack
在linux下运行多线程程序,想查看各个线程的运行情况,怎么办?
Linux下查看某进程的线程状态:
1.jps或top或ps -ef|grep java,找到需要的进程pid;
2.jstack pid,查看pid的所有线程状态信息;
下面为一个示例:进程6798启动了5个线程,其他两个正在跑,另外三个进入了睡眠状态。[[email protected] topology]# jstack 6798
2015-03-02 09:49:05
Full thread dump Java HotSpot(TM) 64-Bit Server VM (17.1-b03 mixed mode):
"pool-1-thread-5" prio=10 tid=0x00007f956c0cb000 nid=0x1a9e runnable [0x00007f95269a9000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at oracle.net.ns.Packet.receive(Unknown Source)
at oracle.net.ns.DataPacket.receive(Unknown Source)
at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:979)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:951)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:435)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:182)
at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:630)
at oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:961)
at oracle.jdbc.driver.T4CPreparedStatement.execute_maybe_describe(T4CPreparedStatement.java:532)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1037)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2905)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:2946)
- locked <0x00007f9564b03cf0> (a oracle.jdbc.driver.T4CPreparedStatement)
- locked <0x00007f95527be288> (a oracle.jdbc.driver.T4CConnection)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1778)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2211)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
at org.hibernate.loader.Loader.list(Loader.java:2090)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at com.hc360.storm.dao.BaseDao.query(BaseDao.java:753)
at com.hc360.storm.dao.BaseDao.query(BaseDao.java:676)
at com.hc360.storm.dao.CompassProdDao.resetFreeBusinComplete(CompassProdDao.java:80)
at com.hc360.storm.service.CompassManage.resetBusinCompass(CompassManage.java:621)
at com.hc360.storm.service.CompassManage.saveBusinInfo(CompassManage.java:456)
at com.hc360.storm.service.CompassManage.initBusinScore(CompassManage.java:215)
at com.hc360.storm.service.CompassManage.initUserBusinScore(CompassManage.java:270)
at sun.reflect.GeneratedMethodAccessor341.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.hc360.storm.service.BusinessInvocationHandler.invoke(BusinessInvocationHandler.java:42)
at $Proxy1.initUserBusinScore(Unknown Source)
at com.hc360.storm.newinit.BatchInitUser.initOneUser(BatchInitUser.java:59)
at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:91)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
"pool-1-thread-4" prio=10 tid=0x00007f956c0c9800 nid=0x1a9d waiting on condition [0x00007f9526aab000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:81)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
"pool-1-thread-3" prio=10 tid=0x00007f956c0c8000 nid=0x1a9c waiting on condition [0x00007f9526bac000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:81)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
"pool-1-thread-2" prio=10 tid=0x00007f956c0c6800 nid=0x1a9b waiting on condition [0x00007f9526cad000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:81)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
"pool-1-thread-1" prio=10 tid=0x00007f956c0c4800 nid=0x1a9a runnable [0x00007f9526dad000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at oracle.net.ns.Packet.receive(Unknown Source)
at oracle.net.ns.DataPacket.receive(Unknown Source)
at oracle.net.ns.NetInputStream.getNextPacket(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.net.ns.NetInputStream.read(Unknown Source)
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:979)
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:951)
at oracle.jdbc.driver.T4C7Ocommoncall.receive(T4C7Ocommoncall.java:100)
at oracle.jdbc.driver.T4CConnection.do_rollback(T4CConnection.java:474)
- locked <0x00007f9552188c00> (a oracle.jdbc.driver.T4CConnection)
at oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:1034)
- locked <0x00007f9552188c00> (a oracle.jdbc.driver.T4CConnection)
at com.mchange.v2.c3p0.impl.C3P0ImplUtils.resetTxnState(C3P0ImplUtils.java:275)
at com.mchange.v2.c3p0.impl.NewPooledConnection.reset(NewPooledConnection.java:388)
at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:362)
- locked <0x00007f9552188b70> (a com.mchange.v2.c3p0.impl.NewPooledConnection)
at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:1246)
- locked <0x00007f9564a6cbd8> (a com.mchange.v2.c3p0.impl.NewProxyConnection)
at org.hibernate.connection.C3P0ConnectionProvider.closeConnection(C3P0ConnectionProvider.java:70)
at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:449)
at org.hibernate.jdbc.ConnectionManager.aggressiveRelease(ConnectionManager.java:404)
at org.hibernate.jdbc.ConnectionManager.afterTransaction(ConnectionManager.java:291)
at org.hibernate.jdbc.JDBCContext.afterTransactionCompletion(JDBCContext.java:221)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:119)
at com.hc360.mmt.db.dao.util.MmtSessionFactory.commit(MmtSessionFactory.java:164)
at com.hc360.storm.dao.BaseDao.commit(BaseDao.java:1774)
at com.hc360.storm.dao.BaseDao.update(BaseDao.java:418)
at com.hc360.storm.dao.BaseDao.update(BaseDao.java:372)
at com.hc360.storm.dao.CompassProdDao.resetFreeBusinComplete(CompassProdDao.java:100)
at com.hc360.storm.service.CompassManage.resetBusinCompass(CompassManage.java:621)
at com.hc360.storm.service.CompassManage.saveBusinInfo(CompassManage.java:456)
at com.hc360.storm.service.CompassManage.initBusinScore(CompassManage.java:215)
at com.hc360.storm.service.CompassManage.initUserBusinScore(CompassManage.java:270)
at sun.reflect.GeneratedMethodAccessor341.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.hc360.storm.service.BusinessInvocationHandler.invoke(BusinessInvocationHandler.java:42)
at $Proxy1.initUserBusinScore(Unknown Source)
at com.hc360.storm.newinit.BatchInitUser.initOneUser(BatchInitUser.java:59)
at com.hc360.storm.newinit.InitUserTask.run(BatchInitUser.java:91)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
原文:http://zlfwmm.blog.51cto.com/5892198/1616388
linux监控线程运行状态,linux查看线程状态--jstack相关推荐
- Linux系统使用ss命令查看端口状态
Linux系统使用ss命令查看端口状态 Linux系统使用ss命令查看端口状态 目录 1.可用工具 2.ss帮助 2.1 选项分类说明 2.2 过滤选项family 2.3 过滤选项state 2.4 ...
- linux下查看mysql线程_linux-如何查看线程在哪个CPU内核中运行?
linux-如何查看线程在哪个CPU内核中运行? 在Linux中,假设线程的pid是[pid],则从目录/ proc / [pid]中我们可以获得许多有用的信息. 例如,这些proc文件/ proc ...
- Linux应用层操作GPIO,查看GPIO状态
1.操作GPIO system("echo 421 >/sys/class/gpio/export"); system("echo out >/sys/cla ...
- linux 监控命令iostat,Linux下 IO实时监控iostat命令详解
Linux系统中的iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同v ...
- java 查看线程死锁_java 查看线程死锁
那我们怎么确定一定是死锁呢?有两种方法. 1>使用JDK给我们的的工具JConsole,可以通过打开cmd然后输入jconsole打开. 1)连接到需要查看的进程. 2)打开线程选项卡,然后点击 ...
- linux 监控命令iostat,Linux性能监控分析命令(三)—iostat命令介绍
性能监控分析的命令包括如下: 1.vmstat 2.sar 3.iostat 4.top 5.free 6.uptime 7.netstat 8.ps 9.strace 10.lsof 命令介绍: i ...
- linux监控服务报警,linux服务器监控手机报警
SA对于服务器的监控是很必要的,但是如果管理的服务器很多,也不可能24小时在线监控. 本文的主要内容就是实现,服务器如果出现异常,会通过短信方式,直接把服务器当前状况发送到管理员手机,SA可以第一时间 ...
- linux 监控网线拔掉,linux应用层监控网线插拔状态的实现.doc
linux应用层监控网线插拔状态的实现 HYPERLINK "/sunzl1987/archive/2012/05/24/2516635.html"linux应用层监控网线插拔状态 ...
- linux监控进程资源,linux系统资源监控命令
查看系统发行版 root@cf0c6032ba2f:/# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Des ...
- linux 监控进程重启,linux进程监控与自动重启的简单实现方法
linux进程监控与自动重启的简单实现方法 目的: linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理: 由定时任务crontab调用 ...
最新文章
- android systemtrace 报错
- 【005】◀▶ C#学习笔记(四)(集合)
- 全面理解java异常机制
- oracle的asmcmd获取归档日志,分析oracle的联机日志和归档日志
- python3迭代器是什么,python3 迭代器
- win7删除微软拼音输入法
- vue 实现横向时间轴
- 未能加载文件或程序集mysql.web.v20__关于MySQL Server影响ASP.NET网站使用的问题:未能加载文件或程序集MySql.Web.v20...
- 基于IP子网将加域的电脑移动到不同的OU
- 正在发生的景象--从大众消费到圈层经济
- Unity3D(七)声音
- 简明python教程gitbook_简明Python教程 Byte of Python
- SRC漏洞提交平台和应急响应中心
- 整理关于Java进行word文档的数据动态数据填充
- MR21修改物料标准价
- 三次握手的过程、四次挥手、为什么要进行第三次握手、为什么要进行四次挥手
- Cve-2016-7434一把梭
- Linux学习路线及网络编程经典书籍
- mysql 数据文件_mysql的数据文件
- iphone一键转移_iPhone 12换机首选,QQ同步助手一键智能备份迁移
热门文章
- gethub连接的提示
- 拼多多店铺什么时候推广好?
- yilia 的html模板,Hexo搭建个人博客:yilia主题配置(七) - 自定义Subnav图标
- USYD悉尼大学INFO1110 详细作业解析Week4 revision(未更新完)
- 初见NVelocity模板引擎
- 5800p计算机公式,卡西欧fx-5800p计算器内置公式及公式自定义在隧道测量中的应用...
- 解决AndroidStudio中使用.9图片不生效的问题
- matlab patch 六面体,[MATLAB数学相关] 求正六面体的细分格式
- dede标签云(TAG)随机颜色及大小的实现方法
- 数字IC面试高频考点之跨时钟域信号处理