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

Stella981
• 阅读 652

今天因为服务器崩了。。。弄了一下午服务器,所以发的就有点晚了~~

但是好饭不怕晚嘛~~

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

我们先放小姐姐~

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

sar

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

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

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

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

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 输出系统交换活动信息

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

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

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

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

这里解释一下各参数:

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**

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

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

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

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

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

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

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

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

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

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)的百分比

休息一下吧~

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

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

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

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

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

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

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

参数-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%**时,表示设备带宽已经占满

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

sdfd

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

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

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

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

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

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

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

本文完

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

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

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

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

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

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

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

本文分享自微信公众号 - 玄魂工作室(xuanhun521)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这