) 树状线程图

5.top -Hp pid 实时的跟踪并获取指定进程中最耗cpu的线程

三、定位I/O瓶颈

1.mpstat -P ALL 1 1000

[bppf_bgw@devappdb001 /]$ mpstat -P ALL 1 1000

Linux 2.6.32-131.0.15.el6.x86_64 (devappdb001) 2014年11月12日 _x86_64_ (16 CPU)

11时59分11秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle

11时59分12秒 all 0.18 0.00 0.48 0.00 0.00 0.00 0.00 0.00 99.34

11时59分12秒 0 0.98 0.00 0.98 0.00 0.00 0.00 0.00 0.00 98.04

11时59分12秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 2 0.00 0.00 0.97 0.00 0.00 0.00 0.00 0.00 99.03

11时59分12秒 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 4 1.98 0.00 5.94 0.00 0.00 0.00 0.00 0.00 92.08

11时59分12秒 5 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.00

11时59分12秒 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 8 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 9 0.00 0.00 0.98 0.00 0.00 0.00 0.00 0.00 99.02

11时59分12秒 10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 11 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 12 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 13 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 14 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

11时59分12秒 15 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00

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

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

2. iostat命令

[bppf_bgw@devappdb001 /]$ iostat -m -x 1 1000

Linux 2.6.32-131.0.15.el6.x86_64 (devappdb001) 2014年11月12日 _x86_64_ (16 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

0.71 0.00 0.69 0.03 0.00 98.57

Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util

cciss/c0d0 0.68 21.53 0.86 49.56 0.03 0.28 12.45 0.06 1.09 0.10 0.49

同样可以观察对应的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,后者就是吞吐量。这也是评价一个系统的性能指标

3.pid命令

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

[bppf_bgw@devappdb001 /]$ pidstat -p 24290 -u -d -t -w -h 1 1000

Linux 2.6.32-131.0.15.el6.x86_64 (devappdb001) 2014年11月12日 _x86_64_ (16 CPU)

# Time TGID TID %usr %system %guest %CPU CPU kB_rd/s kB_wr/s kB_ccwr/s cswch/s nvcswch/s Command

1415768183 24290 0 0.00 0.00 0.00 0.00 6 0.00 0.00 0.00 0.00 0.00 java

1415768183 0 24290 0.00 0.00 0.00 0.00 6 0.00 0.00 0.00 0.00 0.00 |__java

1415768183 0 24293 0.00 0.00 0.00 0.00 1 0.00 0.00 0.00 0.00 0.00 |__java

1415768183 0 24294 0.00 0.00 0.00 0.00 6 0.00 0.00 0.00 0.00 0.00 |__java

1415768183 0 24295 0.00 0.00 0.00 0.00 12 0.00 0.00 0.00 0.00 0.00 |__java

1415768183 0 24296 0.00 0.00 0.00 0.00 1 0.00 0.00 0.00 0.00 0.00 |__java

1415768183 0 24297 0.00 0.00 0.00 0.00 5 0.00 0.00 0.00 0.00 0.00 |__java

1415768183 0 24298 0.00 0.00 0.00 0.00 10 0.00 0.00 0.00 0.00 0.00 |__java

1415768183 0 24299 0.00 0.00 0.00 0.00 11 0.00 0.00 0.00 0.00 0.00 |__java

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

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

4.dstat命令

命令:dstat -y --tcp 1 1000

[bppf_bgw@devappdb001 /]$ dstat -y --tcp 1 1000

---system-- ----tcp-sockets----

int csw |lis act syn tim clo

3006 40k|103 314 1 17 12

5757 7452 |103 311 1 20 12

3494 5368 |103 314 1 20 12

3224 12k|103 316 1 20 12

2962 4799 |103 313 2 18 12

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

四、Java定位CPU使用100%的方法

1:找到导致cpu高的线程

[bppf@CSHJ_QZJK2 ~]$ top -H -p 27927

top - 10:20:30 up 206 days, 22:21, 21 users, load average: 0.73, 1.36, 0.80

Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.9%us, 2.0%sy, 0.0%ni, 96.8%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 32866796k total, 26710720k used, 6156076k free, 500100k buffers

Swap: 16776184k total, 1008696k used , 15767488k free, 4148764k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

27927 bppf_fas 20 0 51288 25m 24m S 22.0 0.1 160:48.62 fasadmin

对应的线程id是十进制的,需要转换为十六进制的在threaddump文件中才可以看到

2:十进制转十六进制

[bppf@CSHJ_QZJK2 ~]$ printf "%x\n" 27927

6d17

3:找到对应的线程

jstack 27927 | less

查找:/0x6d17

找到对应的线程,把相关的方法找出来,可以精确到代码的行号,修改相关源码来fix bug。

linux 系统 指令lis,常用Linxu系统监控命令相关推荐

  1. Linux发行版本及常用国产系统+系统优化

    Linux系统版本 应用 Redhat Centos Ubuntu Debain Suse 国产系统深度Linux(deepin).优麒麟(UbuntuKylin).中标麒麟(NeoKylin):(银 ...

  2. Linux:查看网络信息和网络监控命令。

    ifconfig 该命令用于查看机器挂载的网卡情况. 使用方式 ifconfig -a 命令输出 可见机器有两个网卡,一个时eth0,另一个是本地回环虚拟网卡. 另外,iproute2软件包含一个强大 ...

  3. linux开坑记--常用的3个命令

    为了避免文章选题困难症,前段时间开了一个Docker系列坑,目前还没有完结,今天打算再来开一个Linux系列的坑,聊聊Linux日常开发命令,希望大家喜欢. 打包归档工具tar 首先要说的是打包归档工 ...

  4. 服务器的垃圾清扫系统指令,求win10清除系统垃圾的几个命令

    您好, 操作有风险,建议这类清理操作之前备份重要资料, 新建文本文档-粘贴如下代码-保存关闭-重命名记事本为"清除系统LJ.bat",右键以管理员运行即开始执行. @echo of ...

  5. 初窥Linux 之 我最常用的20条命令

    玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了.当然你也可以在使用时去找一下 ...

  6. linux学习笔记:linux中磁盘管理常用的几个命令

    Linux磁盘管理常用的命令有如下三个: df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分区 区别用法: 1.获取硬盘被占用了多少空间,目前还剩下多少空间等信息用 ...

  7. Linux下实用的JAVA内存泄露监控命令及工具

    2019独角兽企业重金招聘Python工程师标准>>> 一.Linux 命令 1.jstack (linux下特有) 可以观察到jvm中当前所有线程的运行情况和线程当前状态 jsta ...

  8. java 内存泄露监控,Linux下实用的JAVA内存泄露监控命令

    内存泄露一直是比较头疼的事情,下面三个命令我个人觉得相当有用. 1.jstack (linux下特有) 可以观察到jvm中当前所有线程的运行情况和线程当前状态 jstack 2083 输出内容如下: ...

  9. Linux下Ubuntu的常用压缩、解压缩命令,以及tar中的参数 cvf,xvf,cvzf,zxvf的区别

    .tar 文件(不压缩) # 仅打包,并非压缩 tar -xvf FileName.tar # 解包 tar -cvf FileName.tar DirName # 将DirName和其下所有文件(夹 ...

最新文章

  1. 数据库基础笔记(MySQL)4 —— 基础约束
  2. 博客园Markdown新建笔记
  3. 剑破冰山—Oracle开发艺术 书评(by ora-600)
  4. 小学计算机课的活动设计方案,小学信息技术兴趣小组活动策划书三篇
  5. ExecuteScaler的三种返回值。
  6. 栈和队列的Java实现_栈和队列的java简单实现
  7. mysql暂停触发器_mysql如何临时禁用触发器
  8. python pandas教程百家号_Pandas 常见的基本方法
  9. redis查询所有key命令_三歪推荐:Redis常见的面试题
  10. 数字图像处理--图像的缩放变换
  11. MySQL之逻辑架构和存储引擎
  12. Spring: 事务传播机制
  13. python local global_Python 关键字global全局变量详解
  14. 语音识别与语义识别究竟有何区别?
  15. poj 3630 简单Trie树的应用
  16. 线性代数 : 矩阵消元
  17. Python.习题六 字典与集合(下)
  18. vos网络电话系统怎样搭建?
  19. led灯条串联图_LED灯如何串联?
  20. 区块链底层平台有哪些 区块链底层平台搭建

热门文章

  1. edgesForExtendedLayout ios7新特性
  2. 更改tomcat的根目录路径
  3. 免费网页模板提供站推荐
  4. Java线程安全队列Queue实现原理
  5. js的eval代码快速解密
  6. Java Timer、TimerTask
  7. 表单表格-为什么标签需要语义化
  8. 初识Firebug 全文 — firebug的使用
  9. 用Entlib的配置程序块遇到的问题
  10. 技术圈儿001---分布式事务最经典的七种解决方案