Hacker基础之Linux篇:基础Linux命令十五

我们继续学习Linux命令,今天的内容比较长

我们先放小姐姐~

sar

sarSystem Activity Reporter),翻译过来就是<系统活动情况报告>,是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告

包括:文件的读写情况、系统调用的使用情况、磁盘I/OCPU效率、内存使用状况、进程活动及IPC有关的活动等

现在我们以CentOS 7.4 x64为例,介绍sar命令

sar命令使用介绍: 命令格式:sar [options] [-A] [-o file] t [n]

命令功能:系统活动情况报告

命令的常用参数选项说明:

t 为采样间隔,n为采样次数,默认值是1

-o file 表示将命令结果以二进制格式存放在文件中,file是文件名

-A 所有报告的总和

-u 输出CPU使用情况的统计信息

-v 输出inode、文件和其他内核表的统计信息

-d 输出每一个块设备的活动信息

-r 输出内存和交换空间的统计信息

-b 显示I/O和传送速率的统计信息

-a 文件读写情况

-c 输出进程统计信息,每秒创建的进程数

-R 输出内存页面的统计信息

-y 终端设备活动情况

-w 输出系统交换活动信息

一般作为一个系统的管理人员,我们一般常用的是以下命令

1

CPU资源的监控

sar -u -o output.txt 10 3

上面这个命令的意思就是,每10秒采样一次,连续采样3次,观察CPU的使用情况,并将采样结果以二进制形式存入当前目录下的文件output.txt

输出如下:

[root@localhost ~]# sar -u -o output.txt 10 3

Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 05/15/2018 _x86_64_ (1 CPU)

06:41:55 PM CPU %user %nice %system %iowait %steal %idle

06:42:05 PM all 0.60 0.00 0.30 0.00 0.10 99.00

06:42:15 PM all 0.00 0.00 0.10 0.00 0.00 99.90

06:42:25 PM all 0.00 0.00 0.00 0.00 0.10 99.90

Average: all 0.20 0.00 0.13 0.00 0.07 99.60

这里解释一下各参数:

CPUall表示统计信息为所有CPU的平均值

%user:显示在用户级别(application)运行使用CPU总时间的百分比

%nice:显示在用户级别,用于nice操作,所占用CPU总时间的百分比

%system:在核心级别(kernel)运行所使用CPU总时间的百分比

%iowait:显示用于等待I/O操作占用CPU总时间的百分比

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比

%idle:显示CPU空闲时间占用CPU总时间的百分比

那这些信息有什么用呢?

%iowait的值过高,表示硬盘存在I/O瓶颈,我们这时候就要检查是否磁盘出了问题,或者有什么高I/O的程序在运行

%idle的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量

%idle的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU

当我们运维一个网站的时候,需要定期检测和保存这些信息,如果想查看以前某个时期保存的信息,我们可以这样

sar -u -f output-2018-1-1.txt

2

inode、文件和其他内核表的监控

sar -v 10 3

这个命令的意思是,每10秒采样一次,连续采样3次,观察核心表的状态

输入如下:

[root@localhost ~]# sar -v 10 3

Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 05/15/2018 _x86_64_ (1 CPU)

06:50:35 PM dentunusd file-nr inode-nr pty-nr

06:50:36 PM 63668 2048 31052 2

06:50:37 PM 63668 2048 31052 2

06:50:38 PM 63668 2048 31052 2

Average: 63668 2048 31052 2

这里的各个参数的意义如下:

dentunusd:目录高速缓存中未被使用的条目数量

file-nr:文件句柄(file handle)的使用数量

inode-nr:索引节点句柄(inode handle)的使用数量

pty-nr:使用的pty数量

3

内存和交换空间的监控

sar -r 10 3

10秒采样一次,连续采样3次,监控内存分页

输出如下:

[root@localhost ~]# sar -r 10 3

Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 05/15/2018 _x86_64_ (1 CPU)

06:53:41 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty

06:53:42 PM 455988 560196 55.13 2108 201784 1122328 36.05 302392 130064 0

06:53:43 PM 455988 560196 55.13 2108 201784 1122328 36.05 302400 130064 0

06:53:44 PM 455988 560196 55.13 2108 201784 1122328 36.05 302404 130064 0

Average: 455988 560196 55.13 2108 201784 1122328 36.05 302399 130064 0

kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffercache的空间

kbmemused:这个值和free命令中的used值基本一致,所以它包括buffercache的空间

%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比

kbbufferskbcached:这两个值就是free命令中的buffercache

kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap

%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比

4

内存分页的监控

sar -B 10 3

输出是这样的

[root@localhost ~]# sar -B 10 3

Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 05/15/2018 _x86_64_ (1 CPU)

06:56:45 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff

06:56:46 PM 0.00 0.00 65.00 0.00 25.00 0.00 0.00 0.00 0.00

06:56:47 PM 0.00 0.00 26.00 0.00 25.00 0.00 0.00 0.00 0.00

06:56:48 PM 0.00 0.00 17.17 0.00 24.24 0.00 0.00 0.00 0.00

Average: 0.00 0.00 36.12 0.00 24.75 0.00 0.00 0.00 0.00

pgpgin/s:表示每秒从磁盘或swap置换到内存的字节数(KB

pgpgout/s:表示每秒从内存置换到磁盘或swap的字节数(KB

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor

majflt/s:每秒钟产生的主缺页数.

pgfree/s:每秒被放入空闲队列中的页个数

pgscank/s:每秒被kswapd扫描的页个数

pgscand/s:每秒直接被扫描的页个数

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

休息一下吧~

5

I/O和传送速率监控

sar -b 10 3

输出

[root@localhost ~]# sar -b 10 3

Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 05/15/2018 _x86_64_ (1 CPU)

06:59:28 PM tps rtps wtps bread/s bwrtn/s

06:59:29 PM 0.00 0.00 0.00 0.00 0.00

06:59:30 PM 0.00 0.00 0.00 0.00 0.00

06:59:31 PM 0.00 0.00 0.00 0.00 0.00

Average: 0.00 0.00 0.00 0.00 0.00

tps:每秒钟物理设备的I/O传输总量

rtps:每秒钟从物理设备读入的数据总量

wtps:每秒钟向物理设备写入的数据总量

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

6

进程队列长度和平均负载状态监控

sar -q 10 3

输出

[root@localhost ~]# sar -q 10 3

Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 05/15/2018 _x86_64_ (1 CPU)

07:01:42 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked

07:01:43 PM 1 149 0.00 0.01 0.05 0

07:01:44 PM 1 149 0.00 0.01 0.05 0

07:01:45 PM 1 149 0.00 0.01 0.05 0

Average: 1 149 0.00 0.01 0.05 0

runq-sz:运行队列的长度(等待运行的进程数)

plist-sz:进程列表中进程(processes)和线程(threads)的数量

ldavg-1:最后1分钟的系统平均负载(System load average

ldavg-5:过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载

7

系统交换活动信息监控

sar -d 10 3 –p

输出

[root@localhost ~]# sar -d 10 1 -p

Linux 3.10.0-693.21.1.el7.x86_64 (localhost.localdomain) 05/15/2018 _x86_64_ (1 CPU)

07:03:51 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

07:03:52 PM vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

07:03:52 PM centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

07:03:52 PM centos-swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

07:03:52 PM centos-home 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

参数-p可以打印出sdahdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

tps:每秒从物理磁盘I/O的次数,多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的

rd_sec/s:每秒读扇区的次数

wr_sec/s:每秒写扇区的次数

avgrq-sz:平均每次设备I/O操作的数据大小(扇区)

avgqu-sz:磁盘请求队列的平均长度

await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒)

svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间

%utilI/O请求占CPU的百分比,比率越大,说明越饱和

  1. avgqu-sz的值较低时,设备的利用率较高
  2. %util的值接近1%时,表示设备带宽已经占满

sdfd

说了这么多,那么我们来几个检测服务器性能瓶颈常用的

怀疑CPU存在瓶颈,可用sar -usar -q等来查看

怀疑内存存在瓶颈,可用sar -Bsar -rsar -W等来查看

怀疑I/O存在瓶颈,可用sar -bsar -usar -d等来查

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2018-05-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏个人分享

面向消息的持久通信与面向流的通信

消息队列系统为持久异步通信提供多种支持,本质是提供消息的中介存储能力,这样就不需要消息发送方和接收方在消息传输过程中都保持激活状态。

11840
来自专栏Ceph对象存储方案

RGW 的GC深入解析与调优

什么是GC Garbage Collection缩写GC,简称垃圾回收。在RGW中GC一般都是指一些异步的磁盘空间回收操作,一般下面三种情况会发生GC。 1. ...

82780
来自专栏linux驱动个人学习

Linux进程调度器概述--Linux进程的管理与调度(十五)

调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换...

35620
来自专栏java达人

ZooKeeper构建分布式锁(选译)

作者:Scott Leberknight 译者: java达人 来源:http://www.sleberknight.com/blog/sleberkn/en...

26380
来自专栏企鹅号快讯

Golang 中的微服务-第一部分

介绍 Golang 中的微服务系列总计十部分,预计每周更新。本系列的解决方案采用了 protobuf 和 gRPC 作为底层传输协议。为什么采用这两个技术呢?我...

586100
来自专栏WindCoder

WordPress发布文章自动同步到新浪微博(带特色图片)

整体来源于张戈博客,本处仅是修改添加了一处显示文章分类的小功能,若是一篇文章有多个分类,默认使用第一个。经测试好像对于七牛中设置了空间防盗链的不太友好,可能会报...

81720
来自专栏phodal

我的职业是前端工程师【十】客户端存储艺术:数据存储与模型

Web或者移动应用的重心,由后台往前台挪动的两个标志是:客户端存储,客户端模型维护。在可见的未来,我们将会见证后端将不存储数据、由前端负责存储数据的应用。 写过...

197100
来自专栏进击的程序猿

高效的并发控制

本文是阅读论文Efficient Optimistic Concurrency Control Using Loosely Synchronized Clock...

8630
来自专栏人工智能的秘密

教你如何用Python写一个小游戏

最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大...

2K70
来自专栏xingoo, 一个梦想做发明家的程序员

PowerCMD——cmd的命令行工具

之前就想整理一下程序员经常使用的一些工具,最近有时间正好整理一下。 有句话叫做:“工欲善其事必先利其器”,而我就算是搜集工具组装成一个系列——善事利器,来记...

22570

扫码关注云+社区

领取腾讯云代金券