`
agapple
  • 浏览: 1581134 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

常用的linux系统监控命令

 
阅读更多

 

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

找到最耗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内部的一些运行状态监控,得需要借助一些特有的工具进行细粒度的观测。 

  • 大小: 19.3 KB
  • 大小: 72.1 KB
  • 大小: 49.6 KB
  • 大小: 55.4 KB
  • 大小: 54.9 KB
  • 大小: 83.8 KB
  • 大小: 17.8 KB
  • 大小: 13.5 KB
分享到:
评论
2 楼 xuhang1128 2013-10-12  
谢谢非常实用
1 楼 druggo 2011-10-08  
太感谢,深受启发啊!

相关推荐

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

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

    linux系列之常用运维命令整理笔录.docx

    linux系列之常用运维命令整理笔录.docx,本文档是本人整理的一些linux常用运维命令,包括系统监控等等,可以用于排查linux系统问题

    Linux 常用系统状态查看命令图

    linux 常用查看系统信息分析工具。 如如: iostat iotop perf dstat strace netstat free top tcpdump 等等!

    Linux开发运维常用命令整理

    本文档是日常工作中实践环境下的linux下常用命令汇总,包括开发、运维、日常监控、系统常用配置文件修改、系统调优、系统常见问题解决等。

    57个Linux常用命令含参数介绍和使用示例

    系统管理:Linux系统中的命令可以用来管理系统资源,如CPU、内存、磁盘空间等,以及各种系统进程。这有助于系统管理员或用户更好地理解和控制系统的运行状态。 文件操作:Linux中的命令提供了丰富的文件操作功能,如...

    Linux资源监控常用指令

    Linux 系统由若干主要物理组件组成,如 CPU、内存、网卡和存储设备。要有效地管理 Linux 环境,您应该能够以合理的精度测量这些资源的 各种指标 — 每个组件处理多少... 下面我们介绍下linux资源监控有关的一些命令:

    常用的60个Linux常用命令

    这些命令涵盖了Linux日常操作的方方面面,无论是文件管理、系统监控、网络操作还是软件包管理等,都有对应的命令可供使用。作为Linux用户,熟练掌握这些命令是非常有必要的,可以极大提高工作效率。 另外,Linux命令有...

    linux操作系统命令大全

     Shell是Linux系统下的命令解释器,也是使用Linux系统的主要环境,Shell的功能很多,本章主要从Shell的基本概念、Shell的种类、Shell中的特殊字符、重定向以及Shell程序几个方面来讲解,重点内容是Shell的特殊字符...

    linux常用的经典命令

    监控日志、搜索、设置系统参数、配置权限、tomcat等命令

    16个必备Linux服务器监控命令

    想不想知道你的服务器到底在干什么?那么你要知道本文介绍的这些基本命令.一旦你熟悉掌握了这些命令,就为成为专业的 Linux系统管理员打下了基础.

    Linux面试加分项:这些常用命令让你技压群雄!.zip

    这些命令涵盖了文件管理、系统监控、网络操作、权限控制以及软件包管理等多个方面,是Linux全栈工程师和系统管理员必备的技能。无论是对初学者还是有一定经验的Linux用户,这些内容都是提升技能、巩固知识的宝贵资源...

    简单了解Linux性能监控命令free

    linux提供了很多命令来协助我们快速定位到错误,free命令是Linux最常用的命令之一:它可以查看系统的内存状况,包括服务器的总内存,已经使用的内存和剩下未被使用的内存,以及缓冲区和缓存各自占用的内存情况。...

    grafana4.5.2监控linux版本

    最新版grafana监控linux版本,用于项目运行的监控配合各种常用的数据库

    实用全面的linux教程大全

    Bash命令全集.docx ...Linux系统命令及其使用详解.doc Linux系统性能监控工具.doc Linux系统整体性能监控工具详解.doc nmon on Linux 常用参数.docx 四妙招让新手掌握linux维护.docx 浅析Linux下的常用配置文件.docx

    入门学习Linux常用必会60个命令实例详解doc/txt

    要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令...

    springboot项目linux系统下 通用 启动脚本

    springboot项目linux系统下 通用 启动脚本 支持日志输出、远程调试开启 支持start、stop、restart命令 通用启动脚本,只需将服务名改成自己的服务名即可! 保证可用!

    Linux系统日常维护标准.docx

    四、【linux系统的任务计划】 25 五、【linux的系统服务管理】 27 5.1. ntsysv 管理系统服务 27 5.2. chkconfig 管理配置系统服务 28 六、【linux中的数据备份】 30 6.1. rsync的命令格式 30 6.2. rsync常用选项 31 ...

    工作中常用的linux命令

    二.linux 常用命令 ............................................................................................................................ 9 1. cd ....................................................

    华为内部Linux学习资料

    华为的内部培训资料,简单易懂,基础学习还可以!摘取目录给大家看看: 第 1 章 命令行操作及常用命令...4.3 系统信息及运行状态监控 4.4 打包/压缩工具tar 4.5 文件及文件内容的查找 4.6 Linux 的系统服务及其配置

Global site tag (gtag.js) - Google Analytics