2018.1.22 7周1次课

七周一次课(1月22日)

10.1 使用w查看系统负载

10.2 vmstat命令

10.3 top命令

10.4 sar命令

10.5 nload命令

众所周知,生病了需要去医院看病,大夫首先要询问我们哪里不舒服,然后再通过观察和自己的经验,大体上就能判定我们得的是什么病。然而Linux不会说话,它不会主动告诉我们哪里出现了问题,需要我们自己去观察。那么如何评估系统运行状态是否良好呢?下面阿铭就介绍一些帮我们分析系统状态的工具。

10.1 使用w查看系统负载

相信所有Linux管理员最常用的命令就是这个w了,该命令显示的信息很丰富。

第1行从左至右显示的信息依次为:时间(红框)、系统运行时间(黄框)、登录用户数(蓝框)、平均负载(白框)。

从第2行开始的所有行则是告诉我们:当前登录的用户名及其登录地址等。

其实在这些信息中,最应该关注第1行中的load average:后面的3个数值。

第1个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数值表示15分钟内系统的平均负载值 我们着重看第1个值,它表示单位时间段内使用CPU的活动进程数 ( 在这里其实就是1分钟内 ),值越大就说明服务器压力越大。一般情况下,这个值只要不超过服务器的CPU数量就没有关系。如果服务器的CPU数量为8,那么值小于8就说明当前服务器没有压力;否则就要关注一下了。

命令格式:w [-fhlsuV][用户名称]

参数

-h 不显示标题。

-u 列出当前进程和CPU时间时忽略用户名。这主要是用于执行su命令后的情况。

-s 使用短模式。不显示登录时间、JCPU(终端机阶段作业)和PCPU(程序消耗)时间。

-f 切换显示FROM项,也就是远程主机名项。默认值是不显示远程主机名

-V 显示版本信息。

使用说明:

User:登录用户名 
TTY:登录后系统分配的终端号 
From:远程主机名,即从哪登录的 
[email protected]:何时登录 
IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。 
JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间 
PCPU:当前进程所占用时间 
WHAT:当前正在运行进程的命令行

类似命令:uptime

查看cpu核数:cat /proc/cpuinfo

/proc/cpuinfo这个文件记录了CPU的详细信息。目前市面上的服务器有很多是2颗多核CPU,在Linux看来,它就是2*n个CPU(这里的n为单颗物理CPU上有几核)。假如n是4,则查看这个文件时会显示8段类似的信息,而最后一段信息的processor:后面会显示7。所以查看当前系统有几个CPU,我们可以使用命令grep -c 'processor' /proc/cpuinfo。然而查看有几颗物理CPU时,则需查看关键字physical id。

10.2 vmstat命令监控系统的状态

命令w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力。但它无法判断具体是哪里(CPU、内存、磁盘等)有压力,所以这就用到了vmstat。vmstat命令打印的结果共分为6 分:procs、memory、swap、io、system和cpu。请重点关注一下r、b、si、so、bi、bo这几列信息

  1. procs显示进程的相关信息
  • r (run):表示运行或等待CPU时间片的进程数。大家不要误认为等待CPU时间片意味着这个进程没有运行,实际上某一时刻1个CPU只能有一个进程占用,其他进程只能排着队等着,此时这些排队等待CPU资源的进程依然是运行状态该数值如果长期大于服务器CPU的个 数,则说明CPU资源不够用了
  • b (block):表示等待资源的进程数,这个资源指的是I/O、内存等。举个例子,当磁盘读写非常频繁时,写数据就会非常慢,此时CPU运算很快就结束了,但进程需要把计算的结果写入磁盘,这样进程的任务才算完成,那此时这个进程只能慢慢地等待磁盘了,这样这个进程就是这个b状态。该数值如果长时间大于1,则需要关注一下了。
  1. memory显示内存的相关信息
  • swpd:表示切换到交换分区中的内存数量,单位为KB。
  • free:表示当前空闲的内存数量,单位为KB
  • buff:表示(即将写入磁盘的)缓冲大小,单位为KB
  • cache:表示(从磁盘中读取的)缓存大小,单位为KB

  1. swap显示内存的交换情况

  • si:表示由交换区写入内存的数据量,单位为KB

  • so:表示由内存写入交换区的数据量,单位为KB
  1. io显示磁盘的使用情况
  • bi:表示从块设备读取数据的量(读磁盘),单位为KB
  • bo:表示从块设备写入数据的量(写磁盘),单位为KB
  1. system显示采集间隔内发生的中断次数
  • in:表示在某一时间间隔内观测到的每秒设备的中断次数
  • cs:表示每秒产生的上下文切换次数
  1. cpu显示CPU的使用状态
  • us:显示用户下所花费CPU的时间百分比的
  • sy:显示系统花费CPU的时间百分比
  • id:表示CPU处于空闲状态的时间百分比
  • wa:表示I/O等待所占用CPU的时间百分比
  • st: 表示被偷走的CPU所占百分比 (一般都为0,不用关注)。

us+sy+id=100

以上所介绍的各个参数中,需要经常会关注r、b和wa这3列。io部分的bi和bo也是要经常参考的对象,如果磁盘io压力很大,这两列的数值会比较高。另外,当si和so两列的数值比较高并且不断变化说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

我们使用vmstat查看系统状态时,通常都是使用如下形式

10.3 top命令显示进程所占用的系统资源

top命令用于动态监控进程所占的系统资源,每隔3秒变一次。它的特点是把占用系统资源(CPU、内存、磁盘I/O等)最高的进程放到最前面。top命令打印出了很多信息,包括系统负载(load average)、进程数(Tasks)、CPU使用情况、内存使用情况以及交换分区使用情况。这些内容其实可以通过其他命令来查看,用top重点查看的还是下面的进程使用系统资源的详细状况,其中你需要关注%CPU、%MEM和COMMAND这几项所代表的意义。RES这一项为进程所占的内存大小,而%MEM这一项为使用内存的百分比。

第一行:

20:09:18 — 当前系统时间

1:41— 系统已经运行了1小时41分钟(在这期间没有重启过)

1 users — 当前有1个用户登录系统

load average: 0.00, 0.01, 0.05 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

第二行:

Tasks — 任务(进程),系统现在共有119个进程,其中处于运行中的有1个,118个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行:cpu状态

0.0% us — 用户空间占用CPU的百分比。

0.1% sy — 内核空间占用CPU的百分比。

0.0% ni — 改变过优先级的进程占用CPU的百分比

99.9% id — 空闲CPU百分比

0.0% wa — IO等待占用CPU的百分比

0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比

0.0% si — 软中断(Software Interrupts)占用CPU的百分比

第四行:内存状态

3865304k total — 物理内存总量

3538468k free — 空闲内存总量

148860k used — 使用中的内存总量

177976k buffers — 缓存的内存量

第五行:swap交换分区

8388604k total — 交换区总量

8388604k free — 空闲交换区总量

0k used — 使用的交换区总量

3482120k cached — 缓冲的交换区总量

第七行以下:各进程(任务)的状态监控

PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

在top状态下,按大写M键可以按照内存使用大小排序。大写字母P按cpu使用排序。按数字1可以列出所有核 CPU的使用状态,按q键可以退出top。按b键打开或关闭加亮效果。按y键关闭或打开运行态进程的加亮效果。按x键打开或关闭排序列的加亮效果。按shift + >或shift + <可以向右或左改变排序列。敲击“f”键,top进入另一个视图,在这里可以编排基本视图中的显示字段。

top -c 显示详细的进程信息

top -bn1 静态显示所有进程。它表示非动态打印系统资源的使用情况。和top命令唯一的区别就是,它一次性输出所有信息而非动态显示。

10.4 sar命令监控系统状态

sar命令很强大,它可以监控系统几乎所有资源的状态,比如平均负载、网卡流量、磁盘状态、内存使用等。与其他系统状态监控工具不同,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。

如果你的系统没有安装这个命令,请使用命令yum install -y sysstat安装。

初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(无需实时监控,因为不用去查询那个库文件)。它的数据库文件在/var/log/sa目录下 。每隔10分钟会自动生成数据库文件,本例是sa22文件,是哪一天就以那天的数字结尾。

  1. 查看网卡流量 sar -n DEV

这个命令会把当天记录的网卡信息打印出来,每隔10分钟记录一次。

IFACE:这一列表示设备名称

rxpck/s:这一列表示每秒进入收取的包的数量

txpck/s:这一列表示每秒发送出去的包的数量

rxkB/s:这一列表示每秒收取的数据量(单位为KB)

txkB / s这一列表示每秒发送的数据量

后面几列不需要关注

如果有一天服务器丢包非常严重,那么你就应该查一下网卡流量是否异常了。如果 rxpck/ s那一列的数值大于4000,或者rxkB/ s那一列的数值大于5000000,很有可能是被攻击了。正常的服务器网卡流量不会这么高,除非是你自己在复制数据。

另外也可以使用-f选项查看某一天的网卡流量历史,后面跟文件名。sar的库文件一定在/var/log/sa目录下。文件最多保留1个月

  1. 查看历史负载 sar -q 有助于我们查看服务器在过去某个时间的负载状况

  1. 磁盘读写 sar –b

sar命令的数据库文件目录/var/log/sa下,生成的sa22开头的二进制文件。无法用cat命令查看,只用-f选项加载它。

第二天会在当前目录下生成sar开头的文件,这个文件是可以用cat命令打开。

10.5 nload命令查看网卡流量

sar虽然可以查看网卡流量,但是不够直观,还有一个更好用的工具,那就是nload。系统没有默认安装它,安装方法如下:

yum install -y epel-release; yum install -y nload

要想安装nload,前提是先安装epel-elease包,nload包是在epel这个扩展源里面的。以后在工作中,你一定会经常使用epel扩展源安装一些软件包,非常方便。安装完之后,直接运行nload命令,然后回车就会出现动态的界面,很直观

最上面一行为网卡名字以及IP地址,向右箭头可以查看其他网卡的网络流量。输出结果分为两部分,Incoming为进入网卡的流量,Outgoing为网卡出去的流量,我们关注的当然是curr那行的数据,其单位也可以动态自动调整,非常人性化。按q退出该界面

原文地址:http://blog.51cto.com/415326/2064003

时间: 2024-08-06 20:06:39

2018.1.22 7周1次课的相关文章

2018.3.22 13周4次课

十三周四次课(3月22日) 13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令 13.1 设置更改root密码 root用户的mysql的超级管理员用户,跟linux的root用户类似.但需要区分,这个root用户和系统的root用户不是一个用户,需要注意.也可以创建一个普通用户来连接mysql 首次进入mysql数据库是不用密码的.默认mysql数据库的root用户密码为空,连接时不需要密码 设置密码: 启动mysql:service mysqld star

2017.12.22 2周5次课

2017.12.22 二周第五次课 2.23/2.24/2.25 find命令 2.26 文件名后缀 2.23/2.24/2.25 find命令 1.学会使用快捷键 1)ctrl+C:结束(终止)当前命令.如果你输人了一大串字符,但不想运行,可以按ctrl+C组合键,此时光标将跳入下一行,而在刚刚的光标处会留下一个^C的标记. 2)Tab:实现自动补全功能.这个键比较重要,使用频率也很高.当你输人命令.文件或目录的前几个字符时,它会自动帮你补全. 3)ctrl+D:退出当前终端.同样,你也可以输

2018.4.23 17周4次课

十七周4次课(4月23日) 20.20 告警系统主脚本 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本 创建告警系统的目录: [[email protected] /usr/local/sbin]# mkdir mon [[email protected] /usr/local/sbin]# ls mon  nginx_log_rotate.sh [[email protected] /usr/local/sbin]# cd mon [[email pro

2018.1.9 5周2次课

五周第二次课(1月9日) 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 7.6 yum更换国内源 1.恢复之前备份的文件 2. 进入"/etc/yum.repos.d"目录 3.删除"CentOS-Base.repo"文件 4.下载"163.repo"文件 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo curl -O http://mirrors

2018.1.16 6周2次课

六周第二次课(1月16日) 9.4/9.5 sed 9.4/9.5 sed 其实grep工具的功能还不够强大,它实现的只是查找功能,而不能把查找的内容替换.以前用vim操作文档的时候,可以查找也可以替换, 但只限于在文本内部操作,而不能输出到屏幕上.sed工具以及后面要介绍的awk工具就能把替换的文本输出到屏幕上,而且还有其他更丰富的功能.sed和awk都是流式编辑器,是针对文档的行来操作的. sed  '/x/'p filename:匹配x字符 sed  -n  '/x/'p  filenam

2018.3.1 10周2次课

十周第二次课(3月1日) 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机 11.14/11.15 Apache和PHP结合 配置httpd支持php httpd主配置文件/usr/local/apache2.4/conf/httpd.conf vim /usr/local/apache2.4/conf/httpd.conf   //修改以下4个地方 ServerName 搜索ServerName,把#ServerName www.example

2018.4.22 五周第五次课 (正则grep-过滤指定关键词)

正则表达式介绍-grep(过滤指定关键词) egrep使用时,不需要添加脱义字符\ 概念:它使用单个字符串来描述或匹配一系列符合某个句法则规则的字符串: 正则表示式通常用来检索和替换那些符合某个模式的文本内容. 无论是查找某个文档,还是查询某个日志文件并分析其内容,都会用正则表示式. 正则就是一串有规则的字符串: 掌握好正则对于编写shell脚本有很大帮助: 各种变成语言中都有正则,原理是一样的. 命令格式:grep [-cinvrABC] 'word' filename 常用选项如下: -c

2018.1.8 5周1次课

五周第一次课(1月8日) 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库 7.1 安装软件包的三种方法 rpm工具 yum工具 源码包 在Windows系统下安装软件很简单,只要双击后缀为.exe的文件,然后根据提示连续单击"下一步" 按钮即可. 然而在Linux系统下安装软件就没那么容易了,因为我们不是在图形界面下.所以,你必须学会如何在Linux下安装软件 前面我们多次提到了yum命令,它是Red Ha

2018.1.10 5周3次课

五周第三次课(1月10日) 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 8.1 shell介绍 shell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具.实际上,在shell和计算机硬件之间还有一层东西一一系统内核.如果把计算机硬件比作一个人的躯体,那系统内核就是人的大脑.至于shell,把它比作人的五官似乎更贴切些.言归正传,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系