linux下查看mysql线程_linux 线程查看 和 Jvm栈线程ID对应

一、proc查看进程和线程

该方法是个人最为推荐,也最喜欢的一种方法。进程文件下,有几种方式可以获取目前进程开启的进程数。

查看status文件:

# cat /proc/5877/status

Name: mysqld

State: S (sleeping)

Tgid:5877Pid:5877PPid:1……………………省略

Threads:107……………………省略

上面的threads 就是mysqld进程(这里pid是5877)开启的线程数,为107个。

查看sched文件:

# cat /proc/5877/sched

mysqld (5877, #threads: 107)---------------------------------------------------------se.exec_start :3493311530.012024se.vruntime :11069857.718492se.sum_exec_runtime :193606.973849se.statistics.wait_start :0.000000………………省略

第一行就指出了mysqld的pid和总线程数。

查看线程的具体情况:

# ls /proc/5877/task12134 17039 22613 22619 22626 22631 22636 22641 22646 22653 22661 22671 22681 22690 22699 22725 22741 29749 5891 5896 5920 9441

12142 17161 22614 22621 22627 22632 22637 22642 22648 22654 22663 22673 22683 22692 22701 22727 22743 30458 5892 5897 5921 9764

12290 17163 22615 22622 22628 22633 22638 22643 22649 22655 22665 22675 22684 22693 22703 22735 22745 5877 5893 5898 5930

12352 17253 22616 22624 22629 22634 22639 22644 22650 22656 22667 22676 22687 22695 22705 22738 22747 5889 5894 5918 644

12874 22612 22617 22625 22630 22635 22640 22645 22652 22658 22669 22679 22689 22697 22723 22740 2708 5890 5895 5919 9318

task下是以线程id 值命名的目录,可以使用ls |wc 统计出的值和上面两种方式查出的结果一样。进入各线程id的目录,可以查看具体线程的资源信息。

二、Jvm栈线程ID对应

查看负载高的线程id,以 26092 为例,转换成16进制

[bppf_b@CSHJ_QZJK2 ~]$ echo 'obase=16;26092' | bc

65EC

3.通过jstack 命令查看栈信息

"pool-1-thread-1" daemon prio=10 tid=0x00007fdd94037800 nid=0x65ec waiting on condition [0x00007fddf04be000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)- parking to wait for <0x00000000c8025c40>(a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)

at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)

at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)

at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)

at java.lang.Thread.run(Thread.java:662)

总结:java栈中, 第一行里,"

pool-1-thread-1"是 Thread Name

tid指Java Thread id。

nid指native线程的id。

prio是线程优先级。

指线程在0x00000000c8025c40 这个地址上等待。

waiting on condition [

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值