尽可能打印线程池相关信息, 便于监控 ,定位分析.
详见 安全生产 - 稳定性建设的方法论 架构师应该做什么? []_个人渣记录仅为自己搜索用的博客-CSDN博客
获取系统扩容,线程池改造信息.
1. 查看进程id
jps
ps -ef | grep java
都可以查看
2. 查看进程里具体哪个线程最屌丝
man top -H查看线程, -p 指定进程
top -H -p yourpid
例如,查看如下,那么13099最屌丝,并转换为十六进制(0x332b,注意小写)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13098 admin 16 0 2543m 1.4g 21m S 0.0 72.8 0:03.35 java
13099 admin 16 0 2543m 1.4g 21m S 0.0 72.8 1:54.93 java
13100 admin 16 0 2543m 1.4g 21m S 0.0 72.8 0:00.06 java
3. stack查看线程状态
-l long listing. Prints additional information about locks
jstack -l yourpid | less
jstack -l yourpid | grep 0x332b --color=always -A10
其中,各字段的含义,这里有比较ok的介绍:JAVA线程dump的分析 --- jstack pid - 无线&移动互联网技术研发 - BlogJava
4. [备注]thread dump里,有几个ID比较迷惑人,这里注解一下:
1) "tid" is the thread ID the thread have in the JVM (could be a memory address)
2) "nid" is the native thread id (in hex). On some Linux systems this ID maps directly to a process ID (number 13883 (in decimal) in your case).
3) 线程状态的后面,有时候也会多跟一个id,那个是"资源"的id号,在等待对它的获取等。
java 状态 http://www.uml-diagrams.org/examples/java-6-thread-state-machine-diagram-example.html