`

性能监控

阅读更多

找到最耗CPU的java线程

ps命令

命令:ps -mp pid -o THREAD,tid,time   或者  ps -Lfp pid

结果展示:

 

这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息。 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列。

 

比如这里找到了一个TID : 30834 ,所占用的TIME时间最高。

通过 printf "%x\n" 30834 首先转化成16进制, 继续通过jstack命令dump出当前的jvm进程的堆栈信息。 通过Grep命令即可以查到对应16进制的线程id信息,很快就可以找到对应最耗CPU的代码快在哪。

简单的解释下,jstack下这一串线程信息内容: 

 

Java代码  收藏代码
  1. "DboServiceProcessor-4-thread-295" daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]  

nid : 对应的linux操作系统下的tid,就是前面转化的16进制数字

tid: 这个应该是jvm的jmm内存规范中的唯一地址定位,如果你详细分析jvm的一些内存数据时用得上,我自己还没到那种程度,所以先放下

top命令

命令:top -Hp pid 

结果显示:

 

和前面的效果一下,你可以实时的跟踪并获取指定进程中最耗cpu的线程。 再用前面的方法提取到对应的线程堆栈信息。

 

判断I/O瓶颈

mpstat命令

命令:mpstat -P ALL 1 1000

结果显示:

 

注意一下这里面的%iowait列,CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。

通过这个参数可以比较直观的看出当前的I/O操作是否存在瓶颈

 

iostat命令

命令: iostat -m -x 1 1000


 

同样你可以观察对应的CPU中的%iowait数据,除此之外iostat还提供了一些更详细的I/O状态数据,比如比较重要的有: 

avgqu-sz :  The average queue length of the requests that were issued to the device. (磁盘队列的请求长度,正常的话2,3比较好。可以和cpu的load一样的理解)

await : The average time (in milliseconds) for I/O requests issued to the device to be served. (代表一个I/O操作从wait到完成的总时间)

svctm和%util都是代表处理该I/O请求花费的时间和CPU的时间比例。 判断是否瓶颈时,这两个参数不是主要的

 

r/s w/s 和 rMB/s  wMB/s 都是代表当前系统处理的I/O的一些状态,前者是我们常说的tps,后者就是吞吐量。这也是评价一个系统的性能指标

 

pid命令

命令: pidstat -p pid -u -d -t -w -h 1 1000

 

结果显示:

 

相当实用的一个命令,可以基于当个进程分析对应的性能数据,包括CPU,I/O,IR , CS等,可以方便开发者更加精细化的观察系统的运行状态。不过pidstat貌似是在2.6内核的一些较新的版本才有,需要安装sysstat包。

ubuntu下,可以通过sudo apt-get install sysstat进行安装。

sar命令

命令:sar -x pid 1 1000


 

sar也可以指定对应的pid,关注固定的几个参数,没有pidstat那么强大。 看不到对应的I/O, IR等信息。

sar的功能可以覆盖mpstat , iostat的相关功能。

dstat命令

命令:dstat -y --tcp 1 1000


 

通过dstat --tcp可以比较方便的看到当前的tcp的各种状态,不需要每次netstat -nat去看

 

其他命令

netstat -natp  :  查看对应的网络链接,关注下Recv-Q , Send-Q , State。

lsof -p pid :  查找对应pid的文件句柄

lsof -i : 80  : 查找对应端口被哪个进程占用

lsof  /tmp/1.txt :查找对应文件被哪个进程占用

 

tcpdump / wireshark :抓包分析工具

jstat / jmap / jstack / jps 等一系列的java监控命令

 

最后

  如果你想做一些性能调优的工作,一定要善于利用一些工具进行关注相应的状态。通过linux命令你可以比较方便的观测到CPU , I/O , network等一些比较外围的状态, 很多时候就已经可以解决大部分的问题。jvm内部的一些运行状态监控,得需要借助一些特有的工具进行细粒度的观测。 

:http://agapple.iteye.com/blog/1156719

 

分享到:
评论

相关推荐

    oracle性能监控sql 监控当前会话 执行的sql及io等信息

    Oracle性能监控SQL——监控当前会话执行的SQL及IO等信息 Oracle性能监控是数据库管理员的重要职责之一,通过监控数据库的性能,可以及时发现问题,避免数据库的宕机和性能下降。本文将介绍一些常用的Oracle性能监控...

    微服务架构的应用性能监控.pdf

    微服务架构的应用性能监控 微服务架构的应用性能监控是指在微服务架构下的应用系统中监控和优化性能的过程。微服务架构是指将一个大型应用程序拆分成多个小型、独立的服务,以提高系统的灵活性、可靠性和可扩展性。...

    VMware ESXi性能监控方法-ESXTOP Technical Deep Dive

    本文将深入探讨ESXi性能监控的高级技巧,特别是在VMworld 2018上发布的ESXTOP技术深度解析。 首先,ESXTOP是一个命令行工具,它提供实时的性能数据,可以用来监控虚拟机和ESXi主机本身的性能。使用ESXTOP,系统管理...

    记一次记一次Linux性能监控

    【Linux性能监控详解】 在运维和开发过程中,对Linux系统的性能监控是确保服务稳定性和效率的关键环节。本文将深入探讨Linux性能监控的重点,包括CPU、内存、IO和网络子系统的监控,以及如何针对不同类型的應用进行...

    SQLServer性能监控指标说明

    SQL Server 性能监控指标说明 SQL Server 的性能监控指标是数据库管理员和开发者对数据库性能进行监控和优化的重要依据。以下是 SQL Server 性能监控指标的说明: 配置硬件 在 SQL Server 中,配置硬件是性能监控...

    网络实验之设备性能监控

    在计算机网络领域,设备性能监控是一项至关重要的任务,它能够帮助我们实时了解网络中的设备运行状态,及时发现并解决问题,确保网络服务的稳定性和高效性。本实验“网络实验之设备性能监控”聚焦于通过代码实现对...

    java虚拟机性能监控

    ### Java虚拟机性能监控 #### 一、引言 在当今快速发展的信息技术领域,Java作为最流行的编程语言之一,其虚拟机(Java Virtual Machine, JVM)的性能优化和监控成为了确保应用程序高效稳定运行的关键因素。Java...

    Windows服务器性能监控

    ### Windows服务器性能监控 #### 一、概述 随着信息技术的发展,服务器已经成为企业信息化的重要组成部分。为了确保业务的正常运行,对服务器性能进行监控显得尤为重要。本文将详细介绍如何对Windows服务器进行...

    MySQL数据库性能监控与诊断

    ### MySQL数据库性能监控与诊断详解 在IT领域,特别是对于依赖于数据库的现代应用程序而言,数据库性能监控与诊断是确保系统稳定性和响应速度的关键环节。本文将深入探讨MySQL数据库性能监控与诊断的相关知识点,...

    BPC应用性能监控平台实施方案.docx

    BPC 应用性能监控平台实施方案 BPC 应用性能监控平台实施方案是为了提高业务性能和监控能力而设计的解决方案。该方案旨在通过实施 BPC 应用性能监控平台来提高企业的业务效率和竞争力。 第 1 章 前言 在现代企业...

    经典 Linux系统性能监控 中文版

    《经典 Linux系统性能监控 中文版》是一本深入浅出的Linux性能监控指南,它针对的是那些希望理解和优化Linux系统性能的技术人员。该书虽然基于较为传统的概念和技术,但其内容扎实,阐述清晰,覆盖了从基础到进阶的...

    linux性能监控脚本

    在Linux系统管理中,性能监控是一项至关重要的任务,它能够帮助我们及时发现并解决系统可能出现的问题,优化系统资源的利用。这些脚本是经典工具,适用于监控Linux系统的不同性能指标,如流量、磁盘大小、CPU负载和...

    涨见识!JVM性能监控与调优实战 一线大厂大牛讲师的JVM优化案例与解决方案课程

    JVM性能监控与调优实战课程,作为整篇课程的重中之重,非常值得同学们参考学习。课程前端讲解了JVM的性能监控和调优的概述,对调优的的方法和工具进行讲解学习,让同学们掌握方法,理解知识。课程的中间阶段我们进行...

    cat性能监控demo资源

    在IT行业中,性能监控是确保系统稳定性和效率的关键环节,特别是在大规模应用如美团点评这样的平台上。本资源"cat性能监控demo资源"旨在提供一个关于如何使用Cat(Coding Analysis and Testing,编码分析与测试)...

    C#写的计算机性能监控程序

    在IT领域,性能监控是确保系统稳定运行的关键环节。在这个案例中,我们关注的是一个用C#编程语言编写的计算机性能监控程序。该程序能够帮助用户实时了解CPU、内存、网络以及各个进程的使用状况,这对于管理和优化...

    前端性能监控系统

    在IT领域,前端性能监控系统是提升用户体验和优化网站或应用程序不可或缺的一部分。它允许开发者实时追踪和分析用户在浏览器端的交互,以便发现并解决可能导致性能下降的问题。在这个"前端性能监控系统"中,我们可以...

Global site tag (gtag.js) - Google Analytics