centos性能监控系列三:监控工具atop详解
引言
Linux以其稳定性,越来越多地被用作服务器的操作系统(当然,有人会较真地说一句:Linux只是操作系统内核:)。但使用了Linux作为底层的操作系统,是否我们就能保证我们的服务做到7*24地稳定呢?非也,要知道业务功能是由系统上跑的程序实现的,要实现业务功能的稳定性,选择Linux只是迈出的第一步,我们更多地工作是不让业务程序成为稳定性的短板。
当我们的服务器出现问题的时候,外在的表现是业务功能不能正常提供,内在的原因,从程序的角度看,可能是业务程序的问题(程序自身的bug),也可能是服务器上人为的误操作(不当地执行脚本或命令);从系统资源的角度看,可能是CPU抢占、内存泄漏、磁盘IO读写异常、网络异常等。出现问题后,面对各种各样可能的原因,我们应如何着手进行分析?我们有什么工具进行问题定位吗?
atop简介
本文要介绍的atop就是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包。
atop使用方法
在安装atop之后,我们在命令行下敲入”atop"命令即可看到系统当前的运行情况:
安装:yum install atop
系统资源监控字段含义
上图中列出了不少字段以及数值,各字段的含义是什么?我们应该怎么看?以上每个字段的含义都是相对采样周期而言的,下面我们先来关注上图显示的上半部分。
ATOP列:该列显示了主机名、信息采样日期和时间点
PRC列:该列显示进程整体运行情况
- sys、usr字段分别指示进程在内核态和用户态的运行时间
- #proc字段指示进程总数
- #zombie字段指示僵死进程的数量
- #exit字段指示atop采样周期期间退出的进程数量
CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)
- sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
- irq字段指示CPU被用于处理中断的时间比例
- idle字段指示CPU处在完全空闲状态的时间比例
- wait字段指示CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例
CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。
cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100%
CPL列:该列显示CPU负载情况
- avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量
- csw字段指示上下文交换次数
- intr字段指示中断发生次数
MEM列:该列指示内存的使用情况
- tot字段指示物理内存总量
- free字段指示空闲内存的大小
- cache字段指示用于页缓存的内存大小
- buff字段指示用于文件缓存的内存大小
- slab字段指示系统内核占用的内存大小
SWP列:该列指示交换空间的使用情况
- tot字段指示交换区总量
- free字段指示空闲交换空间大小
PAG列:该列指示虚拟内存分页情况
swin、swout字段:换入和换出内存页数
DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息
- sda字段:磁盘设备标识
- busy字段:磁盘忙时比例
- read、write字段:读、写请求数量
NET列:多列NET展示了网络状况,包括传输层(TCP和UDP)、IP层以及各活动的网口信息
- XXXi 字段指示各层或活动网口收包数目
- XXXo 字段指示各层或活动网口发包数目
进程视图
为了更全面地展示进程信息,atop提供了多种进程视图。
默认视图(Generic information)
进入atop信息界面,我们看到的就是进程信息的默认视图(上图下半部分),按g键可以从其他视图跳到默认视图。
内存视图(Memory consumption)
内存视图展示了进程使用内存情况,按m键可进入内存视图。
上图下半部分展示了每个进程占用的虚拟内存空间(VSIZE)、内存空间(RSIZE)大小,以及在上一个采样周期中虚拟内存和物理内存增长大小(VGROW、RGROW),MEM列指示进程所占物理内存大小。
从上图的PAG列的信息,我们可以知道此时系统内存负载较高,出现页换出情况,从进程视图中VGROW和RGROW列可看出VirtualBox进程占用内存量大量增长,部分进程占用的内存减少(VGROW或RGROW字段为负值),为VirtualBox进程腾出空间。
命令视图(Command line)
按c键我们可以进入命令视图,该视图展示了与每个进程相对应的命令。
有时我们某位“马大哈”同事执行了某个脚本或命令,使得系统资源占用率异常飙高,这时,我们可以很容易地通过atop的命令视图找到导致异常的命令。
atop日志
每个时间点采样页面组合起来就形成了一个atop日志文件,我们可以使用"atop -r XXX"命令对日志文件进行查看。那以什么形式保存atop日志文件呢?
对于atop日志文件的保存方式,我们可以这样:
- 每天保存一个atop日志文件,该日志文件记录当天信息
- 日志文件以"atop_YYYYMMDD"的方式命名
- 设定日志失效期限,自动删除一段时间前的日志文件
其实atop开发者已经提供了以上日志保存方式,相应的atop.daily脚本可以在源码目录下找到。在atop.daily脚本中,我们可以通过修改INTERVAL变量改变atop信息采样周期(默认为10分钟);通过修改以下命令中的数值改变日志保存天数(默认为28天):
(sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )&
最后,我们修改cron文件,每天凌晨执行atop.daily脚本:
0 0 * * * root /etc/cron.daily/atop.daily
小结
本文对Linux系统资源及进程监控工具atop进行了介绍,对atop所记录信息中的部分字段的含义以及进程视图进行了分析,最后讲述了atop日志文件的保存方式。
atop工具会根据终端界面的大小调整所显示的字段,因此你使用atop时看到的部分字段可能与以上截图不相同。
centos性能监控系列三:监控工具atop详解的更多相关文章
- Hexo系列(三) 常用命令详解
Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...
- elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))
一.分词器 1. 认识分词器 1.1 Analyzer 分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...
- centos性能监控系列二:Collectl初解
对于一个 Linux 系统管理员来说确保自己管理的系统处于一个良好的状态是其首要责任. Linux 系统管理员可以找到有很多工具来帮助自己监控和显示系统中的进程,例如 top 和 htop 今天介绍一 ...
- centos性能监控系列一:常用监控命令
Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存.CPU.硬盘--)出了问题 下面就让我们了解一下这些常用的性能监控工具. 1.upti ...
- PE文件学习系列三-PE头详解
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojit@qq.com 最近比较忙 ...
- 性能测试监控工具nmon详解和分析
性能测试监控工具nmon详解和分析 1.命令安装 1.查看liunx版本版本x86_64_14i 目录:cd /nmon/logs/ 版本x86_64_14i [root@localhost u06] ...
- (转)CentOS 6下配置软RAID图文详解
CentOS 6下配置软RAID图文详解 原文:http://blog.51cto.com/hujiangtao/1929620 一.RAID 简介 RAID 是英文Redundant Array o ...
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- 多表连接的三种方式详解 hash join、merge join、 nested loop
在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式.多表之间的连接有三种方式:Nested Loops,Hash Join 和 Sort Merge Join.具体适用哪 ...
随机推荐
- HTML简明教程(二)
HTML简明教程(二) 一.HTML 图像 二.HTML 表格 三.HTML 列表 四.HTML div和 span 五.HTML 布局 六.HTML 表单和输入 七.HTML 框架 八.HTML内联 ...
- 前端翻译:Promises/A+规范
原文地址:https://promisesaplus.com/ 本篇为原文翻译+个人理解,若有谬误请各位指正,谢谢. 尊重原创,转载请注明来自:http://www.cnblogs.com/fsjoh ...
- [C#] 可空类型的实现原理
int? 是可为null的值类型.只比int多一个值就是null. 思考: 同样的内存空间,怎么实现的多一个值的?都是4字节,32位,int?靠什么存在一个null值的. 发现: 分析一下内存,看看如 ...
- Web开发常用知识点 - PHP
Ubuntu下面,如何用PHP代码获得系统的临时文件夹 用PHP方法 sys_get_temp_dir() 来取得系统的临时文件夹路径,比如Ubuntu下面,返回值为"/tmp".
- 关于window.onload,window.onbeforeload与window.onunload
★ window.onload 当页面加载完毕的时候执行,即在当前页面进行其他操作之前执行.如,刚进入某个网页的弹窗提示. ( 与window.onload相近的可以参考我写的另外一篇记录&qu ...
- ActiveReports 报表应用教程 (4)---分栏报表
在 ActiveReports 中可以实现分栏报表布局样式,可以设置横向分栏.纵向分栏,同时进行分栏和分组设置,统计分栏分组的小计.合计等.在商业报表系统中常见的分栏报表有商品标签.员工工卡.条码打印 ...
- java注释指导手册
译文出处: Toien Liu 原文出处:Dani Buiza 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我们已经在Java Code Geeks提供了丰富 ...
- C#常用集合的使用(转载)
大多数集合都在System.Collections,System.Collections.Generic两个命名空间.其中System.Collections.Generic专门用于泛型集合. 针对特 ...
- 【GOF23设计模式】命令模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_命令模式.数据库事务机制底层架构实现.撤销和回复 package com.test.command; public cla ...
- TSQL生成Combguid
Nhibernate实现combguid /// <summary> /// Generate a new <see cref="Guid"/> using ...