1.查看tomcat进程号
1 |
ps -ef |grep tomcat |
2.查看占用资源高的线程号
1 |
top -H -p pid |
<M,按使用内存倒序排列;P按照CPU使用率倒序>
3.将线程号转换成16进制
1 |
printf "%x\n" treadid |
4.jstack查找对应代码段
1 |
jstack pid |grep `printf "%x\n" treadid` -A 30 |
-A 显示关键字之后的行数
-B 显示关键字之前的行数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) at java.net.SocketInputStream.read(SocketInputStream.java:170) at java.net.SocketInputStream.read(SocketInputStream.java:141) at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:158) at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189) - locked <0x00000007067c18c8> (a com.mysql.jdbc.util.ReadAheadInputStream) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3163) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3676) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3609) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4160) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:928) at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:2053) at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3554) at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:491) at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3245) at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2413) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2836) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2825) - locked <0x000000070b3849b8> (a com.mysql.jdbc.JDBC4Connection) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2156) - locked <0x000000070b3849b8> (a com.mysql.jdbc.JDBC4Connection) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379) - locked <0x000000070b3849b8> (a com.mysql.jdbc.JDBC4Connection) at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2931) at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440) at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2929) at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:118) at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:493) |