主机性能分析(一)

1.CPU消耗率分析    
    当CPU消耗严重时,主要体现在us、sy、wa或hi的值变高,wa的值是IO等待造成的,hi变高主要为硬件中断造成(例如网卡数据频繁),对于Java应用而言,CPU消耗严重主要体现在us、sy两个值上。
    当us值过高时,表示运行的应用消耗了大部分的CPU。Java应用造成us高的原因主要是线程一直处于可运行(Runnable)状态,通常是这些线程在执行无阻塞、循环、正则或纯粹的计算等动作造成;另外一个可能造成us高的原因是频繁的GC。
    当sy值高时,表示linux花费了更多的时间在进行线程切换,Java应用造成这种现象的主要原因是启动的线程比较多,且这些线程多数都处于不断的阻塞(例如锁等待、IO等待状态)和执行状态的变化过程中,这导致了操作系统要不断地切换执行的线程, 产生大量的上下文切换。

查询基本步骤:
 +-top 或 vmstat 找到消耗CPU严重的线程及其ID,将此线程ID换算成十六进制的值
 +-kill -3 pid 或 jstack [-l] pid | [grep 'nid=Ox6849'] 的方式dump出应用的java线程信息

2.文件IO消耗分析
   在使用iostat查看IO的消耗情况时,首先要关注的是CPU中的iowait%,当iowait占据了主要的百分比时,就表示要关注IO方面的消耗了,这时可以用过iostat -x来详细地查看具体状况。
   iostat - 安装 yum install sysstat(centos) 或 aptitude install sysstate(ubuntu,debian)
   iostat -dx 1 每隔一秒显示IO信息
   iostat -x sda 3 每隔3秒显示sda磁盘IO信息
   参数解析:
   -r/s 每秒读的请求数
   -w/s 每秒写得请求数
   -await 平均每次IO操作的等待时间,单位为毫秒
   -avgqu-sz 等待请求的队列的平均长度
   -svctm 平均每次设备执行IO操作的时间
   -util 一秒之中有百分之几用于IO操作

3.内存消耗分析
   在正是环境,多数Java应用都会将-Xms和-Xmx设为相同的值,避免运行期要不断申请内存。
   对于Java应用,内存消耗主要分为JVM内存消耗和JVM堆外内存消耗。
   JVM内存消耗过多会导致GC执行频繁,CPU消耗增加,应用线程的执行速度严重下降,甚至造成OutOfMemoryError,最终导致Java进程退出。
   JVM堆外内存消耗,最值得关注的是swap的消耗及物理内存的消耗。
   vmstat 其中信息和内存相关的主要是memory下的swpd, free, buff, cache及swap下的si和so
   参数解析
   -swpd 已使用的虚拟内存,单位为Kb
   -free 空闲虚拟内存
   -buff 用于缓冲的内存
   -cache 用户缓存的内存
   -si 每秒从disk读至内存的数据量
   -so 每秒从内存写至disk的数据量
   频繁的swapIO会导致swpd过高
   由于Java应用是单进程应用,因此只要JVM的内存设置不是过大,是不会操作到swap区域的。
   物理内存消耗过高可能是由于JVM内存设置过大、创建的Java线程过多或通过Direct ByteBuffer往物理内存中放置了过多的对象造成的。
    
   sar -r 1 10 通过sar命令查看内存消耗(每1秒刷新一次共10次)
   top 查看进程所消耗的内存量 其中 Java进程消耗内存 =(JVM-Xmx值)+ JVM外的内存值
   pidstat -r -p [pid] [interval] [times] 查看进程所占虚拟内存大小
   参数解析
   -minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
   -majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,
              这样的page fault为major page fault,一般在内存使用紧张时产生
   -VSZ: 该进程使用的虚拟内存(以kB为单位)
   -RSS: 该进程使用的物理内存(以kB为单位)
   -%MEM: 该进程使用内存的百分比
   -Command: 拉起进程对应的命令


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dyyaries

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值