记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了找到最耗CPU的线程

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下这一串线程信息内容:

800 nid=0x7d9b waiting on condition

[0x0000000046f66000]

"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

java sar包_linux下查看最占性能的JAVA进程相关推荐

  1. linux java bin 安装_linux下安装后缀为bin的Java JDK

    您可能感兴趣的话题: java 核心提示:linux下安装后缀为bin的Java JDK方法. 1.sun网站上下载jdk-6u13-linux-i586.bin: 2.一般默认下载到文档: 3.比如 ...

  2. linux打印JAVA日志命令_Linux下查看日志用到的常用命令

    tail  -n  10  test.log   查询日志尾部最后10行的日志; tail -n +10 test.log    查询10行之后的所有日志; head: 跟tail是相反的,tail是 ...

  3. linux java tar 卸载_linux下jdk的卸载与安装

    JDK的卸载 1.检查jdk的是否安装,显示如下表示安装: [root@localhost ~]# rpm -aq|grep java tzdata-java-2010l-1.el6.noarch j ...

  4. ubunt查看网卡流量_Linux下查看网卡流量

    在Linux下怎么看网络流量? 在Windows下,我们可以很方便的通过360来查看网络流量,知道哪个进程占用的网络带宽比较多.那在Linux下怎么看流量呢,对于Web服务器来说这是很重要的. 下面这 ...

  5. python安装gdal包_linux下gdal的python包的安装

    由于python包是从C++包编译出来的,所以需要先下载源码进行编译安装. 1. gdal下载 http://download.osgeo.org/gdal/CURRENT/ sudo ./confi ...

  6. centos查看磁盘转速_linux下查看硬盘的转速

    关于linux下查看硬盘的转速也并没有一个统一的非常好用的工具 ,很多方法都是查看到disk 的型号再去网上查找转速或者利用OEM厂商提供的阵列查看工具去获取.我在网上查找了很久后,找到了一款对SCS ...

  7. linux怎么查看mysql安装在哪里_Linux下查看MySQL的安装路径

    Linux下查看mysql.apache是否安装,并卸载. 指令ps -ef|grep mysql得出结果 root 17659 1 0 2011 ? 00:00:00 /bin/sh /usr/bi ...

  8. debian 文件夹中文件大小_Linux下查看文件和文件夹大小 删除日志

    场景:在sts中执行自动部署时候maven提示No space left on device错误,后来经检查发现是磁盘空间满了,用下面的方法分析发现tomcat下面的logs目录占用了很大的空间,删除 ...

  9. linux 实时 网口 速率_linux 下查看网卡工作速率-阿里云开发者社区

    [root@hadoop058 ~]# mii-tool eth0: negotiated 100baseTx-FD, link ok 100M linux 下查看网卡工作速率 Ethtool是用于查 ...

最新文章

  1. 003_Spring Data JPA分页和排序查询
  2. BootStrap Table使用
  3. windows右键没有显示“文本文档”的解决办法(建议用方法二)
  4. java读取excel数据_Java读取Excel内容(转)
  5. .NET 5 和 C#9 /F#5 一起到来, 向实现 .NET 统一迈出了一大步
  6. linux网络编程之用一张图片说明套接口常用函数
  7. 语音合成论文和英伟达撞车,韩国小哥紧急放出全部草稿代码和样本 | 资源帖...
  8. MVC学习五:Razor布局页面 _ViewStart.cshtml
  9. 3.新建页面以及添加路由 2021-07-11
  10. php开发自学经典.pdf_PHP从入门到精通(第4版) 明日科技 中文完整pdf扫描版[42MB]
  11. 使用Python对GIF读取、生成、压缩和加水印
  12. 软件漏洞之Zabbix
  13. Tms320F28335中软件触发信号采样(ADC)
  14. Select函数的作用和使用
  15. 浅谈AS2 传输/连接
  16. 单源最短路径的迪克斯特拉(Dijkstra)算法
  17. 计算机硬件信息被修改怎么还原,修改bios硬件信息方法
  18. 计算机山西省技能大赛,大同市二职中计算机组参加省技能大赛回顾
  19. 手游代理加盟最准解释来了
  20. 微服务入门篇(二),万字长文带你实操作SpringCloudAlibaba微服务组件

热门文章

  1. 【老杜】MySQL—day01
  2. js更新数组对象_7 种Vue 数据已更新而页面没有更新的情况及深化总结(收藏)
  3. python实例化对象做实参_如何在Python中记住类实例化?
  4. 一行Python代码制作动态二维码
  5. Django查询 – id vs pk
  6. 计算机最佳参数,对使用者来说,学会计算机性能参数提取,给出性能评价很重要...
  7. 用计算机计算出密码,自带计算器的密码
  8. 小程序循环里做字符串拼接_昨天还在for循环里写加号拼接字符串的那个同事,今天已经不在了...
  9. Kconfig文件详解
  10. 关于SQL数据库中cross join 和inner join用法上的区别?