<code id='9etwl'><strong id='9etwl'></strong></code>
<fieldset id='9etwl'></fieldset>
<i id='9etwl'></i>

<span id='9etwl'></span>

<i id='9etwl'><div id='9etwl'><ins id='9etwl'></ins></div></i>

<dl id='9etwl'></dl>
    1. <tr id='9etwl'><strong id='9etwl'></strong><small id='9etwl'></small><button id='9etwl'></button><li id='9etwl'><noscript id='9etwl'><big id='9etwl'></big><dt id='9etwl'></dt></noscript></li></tr><ol id='9etwl'><table id='9etwl'><blockquote id='9etwl'><tbody id='9etwl'></tbody></blockquote></table></ol><u id='9etwl'></u><kbd id='9etwl'><kbd id='9etwl'></kbd></kbd>
        1. <ins id='9etwl'></ins>
          <acronym id='9etwl'><em id='9etwl'></em><td id='9etwl'><div id='9etwl'></div></td></acronym><address id='9etwl'><big id='9etwl'><big id='9etwl'></big><legend id='9etwl'></legend></big></address>

          常用的linux系统监控命令整理

          • 时间:
          • 浏览:8
          • 来源:124软件资讯网

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

              "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内部的一些运行状态监控  ,得需要借助一些特有的工具举行细粒度的观察 。