博客地址: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. Javasrcipt中从一个url或者从一个字符串中获取参数值得方法

    从url中获取参数值是che程序开发过程中的常用需求,偶然得闲,便抽空研究了一下javasrcipt下,获取参数的办法(JAVA中也类似). 首先看url的规范: URL组成:protocol :// ...

  2. threejs 学习之

    主要内容: 使用 threejs 创建 20x20 的网格,鼠标移动时,方块跟随移动,点击时在网格任意位置放置方块,按 shift 时,删除当前位置方块. 流程如下: 创建网格 创建一个与网格同样尺寸 ...

  3. java-初读 HashTable

    有用的标识符 transiant 有用的属性 初始容量11 加载因子0.75 这里理解如果要经常插入大量数据可以增大加载因子 有用的方法 @Test public void testNan() { l ...

  4. while 的循环遍历 分享心得

    while 基本循环体 1.while while 条件: 循环体 2.while else while 条件: 循环体 else:#如果while条件结果为假 不执行循环体 直接执行else 代码块 ...

  5. TinyMCE使用

    1.文本&文本字体颜色 与word类似不赘述 2.字体加粗&划线 与word类似不赘述 选中后  ctrl + B  加粗快捷键 选中后  ctrl + I  斜体快捷键 选中后  c ...

  6. <lable>标签

    最近用各种框架的时候,发现很多平常自己写代码没注意到的标签和用法,在这里记录一下. 其实是很多细节方面需要注意的写法. <label> 定义:为input元素定义标注 label标签不会向 ...

  7. Codeforces 396C

    题意略. 思路: 将树上的节点编好dfs序,然后就可以用树状数组区间修改点查询了. 我们用 lft[v] 和 rht[v]来表示v的子树在dfs序中的左端和右端,这样才方便我们对树状数组的操作. 其实 ...

  8. python大纲+变量基础详解

    1.python的历史 ​ python2和python3的区别 ​ 2004 Django框架的诞生 2.python是编程语言 ​ python 是解释型语言 3.python的种类 ​ cpyt ...

  9. Redis主从复制的原理

    更多内容,欢迎关注微信公众号:全菜工程师小辉.公众号回复关键词,领取免费学习资料. 在Redis集群中,让若干个Redis服务器去复制另一个Redis服务器,我们定义被复制的服务器为主服务器(mast ...

  10. [python] - profilers性能分析器

    1. 性能分析器: profile, hotshot, cProfile 2. 作用: 测试函数的执行时间 每次脚本执行的总时间