引言

Linux以其稳定性,越来越多地被用作服务器的操作系统(当然,有人会较真地说一句:Linux只是操作系统内核:)。但使用了Linux作为底层的操作系统,是否我们就能保证我们的服务做到7*24地稳定呢?非也,要知道业务功能是由系统上跑的程序实现的,要实现业务功能的稳定性,选择Linux只是迈出的第一步,我们更多地工作是不让业务程序成为稳定性的短板。

当我们的服务器出现问题的时候,外在的表现是业务功能不能正常提供,内在的原因,从程序的角度看,可能是业务程序的问题(程序自身的bug),也可能是服务器上人为的误操作(不当地执行脚本或命令);从系统资源的角度看,可能是CPU抢占、内存泄漏、磁盘IO读写异常、网络异常等。出现问题后,面对各种各样可能的原因,我们应如何着手进行分析?我们有什么工具进行问题定位吗?

atop简介

本文要介绍的atop就是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包。

atop使用方法

在安装atop之后,我们在命令行下敲入”atop"命令即可看到系统当前的运行情况:

安装:yum install atop

系统资源监控字段含义

上图中列出了不少字段以及数值,各字段的含义是什么?我们应该怎么看?以上每个字段的含义都是相对采样周期而言的,下面我们先来关注上图显示的上半部分。

ATOP列:该列显示了主机名、信息采样日期和时间点

PRC列:该列显示进程整体运行情况

  1. sys、usr字段分别指示进程在内核态和用户态的运行时间
  2. #proc字段指示进程总数
  3. #zombie字段指示僵死进程的数量
  4. #exit字段指示atop采样周期期间退出的进程数量

CPU列:该列显示CPU整体(即多核CPU作为一个整体CPU资源)的使用情况,我们知道CPU可被用于执行进程、处理中断,也可处于空闲状态(空闲状态分两种,一种是活动进程等待磁盘IO导致CPU空闲,另一种是完全空闲)

  1. sys、usr字段指示CPU被用于处理进程时,进程在内核态、用户态所占CPU的时间比例
  2. irq字段指示CPU被用于处理中断的时间比例
  3. idle字段指示CPU处在完全空闲状态的时间比例
  4. wait字段指示CPU处在“进程等待磁盘IO导致CPU空闲”状态的时间比例

CPU列各个字段指示值相加结果为N00%,其中N为cpu核数。

cpu列:该列显示某一核cpu的使用情况,各字段含义可参照CPU列,各字段值相加结果为100%

CPL列:该列显示CPU负载情况

  1. avg1、avg5和avg15字段:过去1分钟、5分钟和15分钟内运行队列中的平均进程数量
  2. csw字段指示上下文交换次数
  3. intr字段指示中断发生次数

MEM列:该列指示内存的使用情况

  1. tot字段指示物理内存总量
  2. free字段指示空闲内存的大小
  3. cache字段指示用于页缓存的内存大小
  4. buff字段指示用于文件缓存的内存大小
  5. slab字段指示系统内核占用的内存大小

SWP列:该列指示交换空间的使用情况

  1. tot字段指示交换区总量
  2. free字段指示空闲交换空间大小

PAG列:该列指示虚拟内存分页情况

swin、swout字段:换入和换出内存页数

DSK列:该列指示磁盘使用情况,每一个磁盘设备对应一列,如果有sdb设备,那么增多一列DSK信息

  1. sda字段:磁盘设备标识
  2. busy字段:磁盘忙时比例
  3. read、write字段:读、写请求数量

NET列:多列NET展示了网络状况,包括传输层(TCP和UDP)、IP层以及各活动的网口信息

  1. XXXi  字段指示各层或活动网口收包数目
  2. 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日志文件的保存方式,我们可以这样:

  1. 每天保存一个atop日志文件,该日志文件记录当天信息
  2. 日志文件以"atop_YYYYMMDD"的方式命名
  3. 设定日志失效期限,自动删除一段时间前的日志文件

其实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详解的更多相关文章

  1. Hexo系列(三) 常用命令详解

    Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...

  2. elasticsearch系列三:索引详解(分词器、文档管理、路由详解(集群))

    一.分词器 1. 认识分词器  1.1 Analyzer   分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如 ...

  3. centos性能监控系列二:Collectl初解

    对于一个 Linux 系统管理员来说确保自己管理的系统处于一个良好的状态是其首要责任. Linux 系统管理员可以找到有很多工具来帮助自己监控和显示系统中的进程,例如 top 和 htop 今天介绍一 ...

  4. centos性能监控系列一:常用监控命令

    Linux系统出现问题时,我们不仅需要查看系统日志信息,而且还要使用大量的性能监测工具来判断究竟是哪一部分(内存.CPU.硬盘--)出了问题 下面就让我们了解一下这些常用的性能监控工具. 1.upti ...

  5. PE文件学习系列三-PE头详解

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 最近比较忙 ...

  6. 性能测试监控工具nmon详解和分析

    性能测试监控工具nmon详解和分析 1.命令安装 1.查看liunx版本版本x86_64_14i 目录:cd /nmon/logs/ 版本x86_64_14i [root@localhost u06] ...

  7. (转)CentOS 6下配置软RAID图文详解

    CentOS 6下配置软RAID图文详解 原文:http://blog.51cto.com/hujiangtao/1929620 一.RAID 简介 RAID 是英文Redundant Array o ...

  8. 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的无状态模 ...

  9. 多表连接的三种方式详解 hash join、merge join、 nested loop

    在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的连接方式.多表之间的连接有三种方式:Nested Loops,Hash Join 和 Sort Merge Join.具体适用哪 ...

随机推荐

  1. iOS-UIScrollView-图片缩放

    一. 实现功能 两个手指捏合,可以放大或者缩小图片. 二.原理说明 1. 实现缩放功能的四个步骤 (1) 让控制器遵守代理协议 (2) 让scrollView设置代理 self (3) 调用代理方法, ...

  2. iOS-设计模式-懒加载

    一.为什么要懒加载? 答: iPhone设备内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么久可能会耗尽iOS设备的内存.这些资源例如大量的数据,图片,音频,过多的控件等. 二.懒加 ...

  3. .NET C# 使用S22.Imap.dll接收邮件 并且指定收取的文件夹的未读邮件,并且更改未读准态

    string host = Conf.ConfigInfo.POP_Host; int port = Conf.ConfigInfo.POP_Port; string username =Conf.C ...

  4. BZOJ1003 物流运输 最短路+DP

    1003: [ZJOI2006]物流运输 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条 ...

  5. 餐厅到店点餐系统(APP)

    MY-HR 成员: 角色分配 学号 博客园 丘惠敏 PM项目经理 201406114203 http://www.cnblogs.com/qiuhuimin/ 郭明茵 用户 201406114204 ...

  6. 准备.Net转前端开发-WPF界面框架那些事,值得珍藏的8个问题

    题外话 不出意外,本片内容应该是最后一篇关于.Net技术的博客,做.Net的伙伴们忽喷忽喷..Net挺好的,微软最近在跨平台方面搞的水深火热,更新也比较频繁,而且博客园的很多大牛也写的有跨平台相关技术 ...

  7. 文本对象模型(Document Object Model)

    本文内容: 1. 概述 2. DOM中的节点类型 3. DOM节点的选取 4. 存取元素属性 5.DOM元素的增删 6.小结 ★ 概述 文本对象模型(DOM)是一个能够让程序和脚本动态访问和更新文档内 ...

  8. IIS启动网站出错的几个解决方法

    在ASP.NET项目中使用了IIS服务器,由于系统是XP的,而在装系统的时候IIS没有一起装,所以从网上下载的IIS5.0版本(其它版本XP是用不了的).但是在使用的过程中老是出问题,每次调试好后,过 ...

  9. Python记录-Pip安装

    1.第一步 下载py文件:https://bootstrap.pypa.io/ez_setup.py #!/usr/bin/env python """ Setuptoo ...

  10. DIV嵌套垂直居中

    第一记住一点:父级相对定位,子级绝对定位 下面演示CSS样式: .父级DIV{ margin:0px auto; position:relative; border:2px solid #ff0000 ...