cpu数、核数、与线程数关系:
2、线程池大小设置,CPU的核心数、线程数的关系和区别,同步与堵塞完全是两码事
问题排查:
java程序性能分析之thread dump和heap dump
- 很好系列文章:
Java开发必须掌握的线上问题排查命令 ----- 系列
常用jdk命令:
Java排查问题命令
CPU占用过高问题排查
JVM监控和查看 --全面
-
jps
jps 命令和linux中的ps命令比较类似,不过它只会列出所有的Java进程,通过jps命令可以方便的查看java进程的启动类、传入参数和java虚拟机参数等信息。
之前我们可能会通过ps -ef | grep java 查看java进程: -
jstack
jstack 用户打印指定java进程的线程堆栈信息,之前在排查CPU占用率过高的文章中我们使用过。 -
jinfo
jinfo 是 JDK 自带的命令,可以用来查看正在运行的 java 应用程序的扩展参数,包括Java System属性和JVM命令行参数;也可以动态的修改正在运行的 JVM 一些参数。当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息 -
jmap
jmap 有两个主要用途:
1、查看堆的情况
使用jmap -heap pid,可以打印一个堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息
2、dump
使用jmap -dump:format=b,file=heapdump.phrof pid命令可以生成堆转储快照dump文件。这个在我们排查内存溢出导致频繁Full GC的情况经常用到。
获取到dump文件之后我们可以下载到本地使用MemoryAnalyzerEclipse工具对文件进行分析,从而找到问题所在。 -
jstat
jstat是JDK自带的一个轻量级工具,主要对java应用程序的资源和性能进行实时的命令行的监控,包括对Heap Size和来及回收状况的监控。
网友评论