博客地址:http://www.moonxy.com

一、前言

如果你是一名 Linux 运维人员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行。系统运行状态主要包括:系统负载、内存状态、进程状态、CPU 负载等信息。

二、监控系统的状态

监控系统的状态主要包括系统负载CPU 的使用率

2.1 w 查看当前系统的负载

需要特别关注的是第一行的 "load average:"后面的3个数值,第1个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个值表示15分钟内系统地平均负载值。这个值表示单位时间段内 CPU 的活动进程数,这个值越大就说明服务器压力越大。通常情况下,这个值只要不超过服务器的 CPU 数量就没有关系。

[root@ryan ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
stepping : 3
microcode : 23
cpu MHz : 2494.259
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dtherm fsgsbase bmi1 avx2 smep bmi2 invpcid
bogomips : 4988.51
clflush size : 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz
stepping : 3
microcode : 23
cpu MHz : 2494.259
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm ida arat epb xsaveopt pln pts dtherm fsgsbase bmi1 avx2 smep bmi2 invpcid
bogomips : 4988.51
clflush size : 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:

此处查看 processor 的数值,从 0 开始,得到处理器的个数。

也可以使用 uptime 命令,显示的内容为:使用 w 命令输出的第一行,从左到右即为:系统现在的时间,系统从上次开机到现在运行了多长时间,系统目前有多少登录用户,系统在1分钟内、5分钟内、15分钟内的平均负载。

[root@ryan ~]# uptime
19:00:29 up 91 days, 21:39, 1 user, load average: 0.11, 0.05, 0.05

2.2 vmstat 监控系统的状态

vmstat - Report virtual memory statistics,报告虚拟内存的统计信息,包含6个部分:procs、memory、swap、io、system 和 cpu。重点关注一下 r、b、si、so、bi 和 bo 这几列信息。

其中:

buff 表示缓冲区,即准备要写入磁盘的数据大小,buff 缓冲(cpu 处理完的数据 > 内存 (buff)> 磁盘);

cache 表示缓存区,即准备从磁盘中需要读取的数据大小,cache 缓存(磁盘 > 内存(cache) > cpu 处理数据)。

# vmstat 3

表示每3秒钟更新一次输出信息,循环输出,按 Ctrl + c 键结束。

# vmstat 3 5

表示每隔3秒更新一次输出信息,共输出5次后停止。

2.3 命令 iostat

显示 CPU 的统计信息和磁盘输入/输出的统计信息。

-c 选项:只显示 CPU 的使用情况;

-d 选项:只显示磁盘的使用情况;

2.4 top 显示进程锁占的系统资源

top 命令用于动态监控进程所占的系统资源,默认时间间隔:每隔3秒更新一次。

默认排序方式:按照 %CPU 降序排序,按 Shift + m 按照 %MEM 降序排序。

# top -d 5 表示设置每隔5秒更新一次输出信息;执行 top 命令后按数字1,可以查看每个 CPU 的使用状态,按 z 可彩色显示;

# top -c 将最后一列的命令显示为完整路径。

直接使用 top 命令如下:

使用 ,然后按 z,显示如下:

# top -bn1,表示非动态打印系统资源的使用情况:

最左侧显示进程 ID,即 PID,通过 PID 编号可以在 /proc/ 目录下面查到对应 PID 的目录,即系统内存的映射目录,进入后即可查询到对应进程的详细信息。

2.5 sar 监控系统状态

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

如果系统没有安装这个命令,请使用:yum install -y systat。它的数据库在 /var/log/sa 目录下。

查看网卡流量,以十分钟为间隔

sar -n DEV

如果想实时查看网卡流量,如:

# sar -n DEV 1 3

表示 1 秒显示一次,共显示3秒次后结束:

如果需要查看指定某一天的网卡流量历史,可以添加 -f 选项,后面跟文件名。

查看流量历史目录,ls -l /var/log/sa

查看流量历史文件,sar -n DEV -f /var/log/sa/sa06

查看历史负载

# sar -q

会显示历史负载,以 10 分钟为间隔:

sar -b 可以对磁盘I/O进行统计,sar -b 1 3 表示1秒钟统计一次,共统计3秒钟:

2.6 free 查看内存使用状况

free 命令可以查看当前系统的总内存大小以及使用内存的情况。默认单位为 KB,添加 -m 或者 -h 可以分别以 MB 或者合适的单位显示内存的使用容量。最后一行为 swap 交换分区大小,如果系统没有设置 swap,则不显示。如下:

以上图为例,当前系统总内存大小为 1906280KB,以及使用 154884KB,剩余 1751396KB。如果把 buffers 和 cached 考虑在内,实际剩余内存大小并不是 1751396KB,而是 1810784 KB,实际使用的内存也应该是 95496 KB,而不是 154884KB。

可以通过将 watch 和 free 相结合来动态监控内存状况:

在 watch 后面跟上需要运行的命令,watch 就会自动重复运行这个命令,默认2秒钟执行一次,并把执行的结果更新到屏幕上:

# watch -n 3 -d free

-n 指定重复执行的时间,-d 表示高亮显示变动。

2.7 ps 查看系统进程

常用的 ps 命令的参数组合为:

# ps aux

# ps -elf

可以看出,使用 # ps aux 时,不用加 "-" 符号,# ps -elf 比 # ps aux 在最左侧多了一列 父进程 id。

pgrep 命令通过进程名称从运行进程队列中查找进程,并显示查找到的进程id。常用的选项有 -lo 表示列出对应进程组中最小进程号和程序名,-ln 表示列出对应进程组中最大进程号和程序名。

2.8 netstat 查看网络状况

netstat 命令用来打印网络连接状况、系统所开放的端口、路由表等信息。

打印当前系统开放了哪些端口:

# netstat -lnp,仅显示监听状态的端口

打印网络连接状况:

# netstat -an,显示所有监听的端口和非监听状态的连接

注意:

从整体上看,netstat 的输出结果可以分为两个部分:

一个是 Active Internet connections,称为有源TCP连接,其中 "Recv-Q" 和 "Send-Q" 指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是 Active UNIX domain sockets,称为有源 Unix 域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

ss 命令用来显示处于活动状态的套接字信息。ss 命令可以用来获取 socket 统计信息,它可以显示和 netstat 类似的内容。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。

综上命令进行简单归类:

CPU 性能评估:vmstat 命令、sar 命令、iostat 命令、uptime 命令等;

内存性能评估:free 命令、vmstat 命令、sar -r 命令等;

磁盘 I/O 性能评估:sar -d 命令、iostat -d 命令、vmstat -d 命令等;

网络性能评估:netstat -I 命令、netstat -r 命令、sar -n 命令等;

Linux 笔记 - 第十三章 Linux 系统日常管理之(一)系统状态监控的更多相关文章

  1. Linux 笔记 - 第十三章 Linux 系统日常管理之(二)Linux 防火墙和任务计划

    博客地址:http://www.moonxy.com 一.前言 Linux 下的的防火墙功能是非常丰富的,作为 Linux 系统工程师有必要了解一下.防火墙一般分为硬件防火墙和软件防火墙.但是,不管是 ...

  2. Linux 笔记 - 第十三章 Linux 系统日常管理之(四)Linux 中 rsync 工具和网络配置

    博客地址:http://www.moonxy.com 一.前言 rsync 命令是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,可以理解为 remote sync(远程同步) ...

  3. Linux 笔记 - 第十三章 Linux 系统日常管理之(三)Linux 系统日志和服务

    博客地址:http://www.moonxy.com 一.前言 日志文件记录了系统每天发生的各种各样的事情,比如监测系统状况.排查问题等.作为系统运维人员可以通过日志来检查错误发生的原因,或者受到攻击 ...

  4. Linux 笔记 - 第二十三章 MySQL 主从复制配置

    一.前言 MySQL Replication,也被称为主从复制.AB 复制.简单来说就是 A 和 B 两台服务器做主从后,在 A 服务器上写入数据,B 服务器上也会跟着写入输入,两者之间的数据是实时同 ...

  5. Linux 笔记 - 第五章 Linux 用户与用户组管理

    博客地址:http://www.moonxy.com Linux 是一个多用户的操作系统,在日常的使用中,从安全角度考虑,应该尽量避免直接使用 root 用户登录,而使用普通用户. 1. 关于用户 u ...

  6. Linux 笔记 - 第十七章 Linux LVM 逻辑卷管理器

    一.前言 在实际生产中,有时会遇到磁盘分区空间不足的情况,这时候就需要对磁盘进行扩容,普通情况下需要新加一块磁盘,重分区.格式化.数据复制.卸载旧分区.挂载新分区等繁琐的步骤,而且有可能造成数据的丢失 ...

  7. Linux 笔记 - 第六章 Linux 磁盘管理

    博客地址:http://www.moonxy.com 一.前言 1.1 硬盘 硬盘一般分为 IDE 硬盘.SCSI 硬盘和 SATA 硬盘.在 Linux 中,IDE 接口的设备被称为 hd,SCSI ...

  8. Linux 笔记 - 第四章 Linux 文件和目录管理

    博客地址:http://www.moonxy.com 1. 绝对路径和相对路径 绝对路径:由根目录 "/" 写起的.如:/usr/local/mysql 相对路径:不是由根目录 & ...

  9. centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课

    centos Linux系统日常管理1  cpuinfo cpu核数   命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...

随机推荐

  1. 使用sc 命令写脚本 添加和删除服务 简单应用

    添加服务 @echo.服务启动...... @echo off @sc create 服务名 binPath= "%~dp0\服务路径" @sc config 服务名 start= ...

  2. Go 语言基础——go语言如何优雅的进行测试

    我们可以为Go程序编写三类测试,即:功能测试(test).基准测试(benchmark),也称性能测试(example) #### 测试文件的约定 1. 测试文件的主名称应该以被测试文件主名称为先导, ...

  3. Flink的JobManager启动(源码分析)

    都知道Flink中的角色分为Jobmanager,TaskManger 在启动脚本里面已经找到了jobmanager的启动类org.apache.flink.runtime.entrypoint.St ...

  4. [系列] 使用 go modules 包管理工具(一)

    目录 概述 初始化 添加依赖包 go mod 命令 小结 源码地址 概述 我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的. 为什么是开箱即用,它会集成哪些功能? 以上 ...

  5. unity_实用小技巧(相机跟随两个主角移动)

    在两人对战的游戏中,有时候我们希望能看清楚两玩家的状态,这时我们需要让相机跟随玩家,可是我们不能让相机只跟随一个玩家移动,这时我们可以取两玩家的中点作为相机的位置.方法如下: public Trans ...

  6. [工具使用]-利用latex管理创建自己的ACM模板

    从很早入坑ACM开始,便和各种算法的模板打着交道,虽然kaungbin的模板已经足够强大,但是自己在平常做题中也逐渐有着自己的一些模板,也有一些kuangbin模板中没有的更快的板子,虽然不确定时候以 ...

  7. ZYNQ Block Design中总线位宽的截取与合并操作

    前言 在某些需求下,数据的位宽后级模块可能不需要原始位宽宽度,需要截位,而某些需求下,需要进行多个数据的合并操作. 在verilog下,截位操作可如下所示: wire [7:0] w_in; wire ...

  8. map()函数映射

    map()函数(映射) pattern = "abba" str = "dog cat cat dog" res=str.split() print(list( ...

  9. javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通

    我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ...

  10. 到底什么是故事点(Story Point)?

    故事点是一个度量单位,用于表示完成一个产品待办项或者其他任何某项工作所需的所有工作量的估算结果. 当采用故事点估算时,我们为每个待办项分配一个点数.待办项估算结果的原生数据并不重要,我们只关注最后得到 ...