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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值