不会排查线上问题?来学学这些命令吧!

原文地址:https://mp.weixin.qq.com/s/75zCoSdVTnFhDBU48dQTLA

众所周知计算机的几大组成部分是:CPU、内存、磁盘、网络。那么线上机器出现问题的时候,很多时候也是这几样东西出现了问题。所以排查线上问题的关键,就是观察这几块资源的使用情况。

CPU

查看CPU使用情况有许多命令,其中用得最多的还是top命令。它不仅可以列出每个CPU的使用情况,还可以列出内存使用情况以及各个进程的资源使用占比。

top 命令的使用方式为互动模式,即输入命令之后进入显示模式,在显示模式下再次输入相关关键词进行操作。

top 命令的显示信息可以分为两大部分:系统资源信息、进程信息。

系统资源信息

在这块区域里,显示了机器的系统概况、任务概况、CPU占用、内存占用、虚拟内存占用。

  • 系统概况。第一行显示的是系统概况,它表示该机器到现在为止已经运行了 122 天 10 个小时 31 分钟,一共有 1 个用户活动,并且 1、5、15 分钟内的系统平均负载为 0.00、0.01、0.05。

  • 任务概况。第二行显示的是任务概况,它表示该机器一共有 62 个运行的任务,其中 1 个而在运行, 61 个在休眠,0 个停止,0 个僵尸进程。

  • CPU占用。第三行显示的是CPU占用情况,它表示当前用户使用的 CPU 比率为 0.0%,内核使用的 CPU 比率为 0.3%,空闲的 CPU 为 99.7%。其中因 IO 等待(wa)而占用 CPU 的百分比为 0.0%,因硬中断而占用 CPU 的百分比为 0.0%,因软中断而占用 CPU 的百分比为 0.0%。

  • 内存占用。第四行显示的是内存占用情况,它表示目前物理内存总量为 1016412 KB,空闲内存为 98608 KB,使用内存为 73220 KB,缓存的内存为 844584 KB。

  • 虚拟内存占用。第五行表示虚拟内存占用情况,共有 0 KB 虚拟内存,0 KB 空闲内存,0 KB 正在使用,有 757892 KB 可用。

进程信息

进程信息的信息比较简单,分别有下面几列数据:

  • PID:进程PID

  • USER:进程所有者

  • PR:进程优先级

  • NI:nice值。负值表示优先级越高,正值表示优先级越低。

  • VIRT:进程使用的虚拟内存总量,单位kb。

  • RES:进程使用的、未被换出的物理内存大小,单位kb。

  • SHR:共享内存大小,单位kb。

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

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

  • %MEM:进程使用的物理内存百分比。

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

  • COMMAND:进程名称(命令名)

上述两个区域就是 top 命令在显示模式下的所有信息,但除了上面这些信息,我们还可以输入相关命令去查看更多信息。

查看每个CPU核心的占用情况

在显示模式下,输入数字 1 可以在「系统资源信息」区域看到每个 CPU 的占用信息,非常直观。

查看「进程信息」默认排序列

在默认情况下,top 命令的「进程信息」区域是按照 CPU 占用比例排序的。

按下「x」键可以高亮目前排序的列。

改变「进程信息」排序方式

在默认情况下,top 命令的「进程信息」区域是按照 CPU 占用比例排序的。如果需要,你可以使用「Shift + >」或「Shift + <」组合键来改变排序的列。

只查看某个进程的信息

当我们通过排序了解到某个进程占用率特别高的时候,我们可能只想查看该进程的变化,那么这时候可以用:top -c PID来查看。

例如我们通过上图知道了 mysql 这个进程的内存使用率最高,那么我们输入top -c 14170单独查看该进程的信息:

设置更新间隔

top 命令在显示模式下会自动刷新,我们也可以通过 -d 命令来设置更新间隔。例如输入top -d 3表示每 3 秒更新一次。

其实关于 top 命令还有更多命令,这里就不一一介绍了。通过上面的介绍,相信大家对 top 命令也有一个大概的认识,如果命令不够用了,再去网上搜索一下即可。

内存

一般来说,查看内存信息可以用:top、vmsatat、free 三个命令。其中:

  • free 命令和 top 命令查看内存占用情况。

  • vmstat 则可以查看更加详细的内存使用情况。

free 命令

我们也经常用 free 命令来查看内存的使用情况:

vmstat 命令

虽然 free 命令可以查看内存使用情况,但是没有更加详细的信息。如果要查看更加详细的信息,则可以用 vmstat 命令。

vmstat 是 Virtual Meomory Statistics(虚拟内存统计)的缩写,通过 vmstat 除了可以看到 top 命令的信息之外,还能看到 IO 磁盘和£™系统信息。

上面的信息含义如下:

  • 任务信息。r/b 分别表示运行中和阻塞的任务数。

  • 内存信息。swpd 表示使用虚拟内存大小、free 表示可用内存大小、buff 表示用作缓冲的内存大小,cache 表示用作缓存的内存大小。

  • *虚拟内存信息。 si 表示每秒从交换区写到内存的大小,so 表示每秒写入交换区的内存大小。

  • IO信息。bi: 每秒读取的块数,bo: 每秒写入的块数。(现在的Linux版本块的大小为1024bytes)

  • 系统信息。in: 每秒中断数,包括时钟中断。cs: 每秒上下文切换数。

  • CPU信息。us: 用户进程执行时间(user time),sy: 系统进程执行时间(system time)。id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。wa: 等待IO时间。

我们最常使用的 vmstat 命令组合有下面几条:

定时定量刷新信息

我们可以设定刷新时间以及显示的次数来方便我们查看信息,例如下面的这条命令规定每 1 秒刷新一次,一共统计 5 次。

当然你也可以只设置刷新间隔,不设置统计次数,这样的话程序便会一直统计。例如下面的命令规定每 1 秒刷新一次,并不断统计。

磁盘

查看磁盘的信息一般有三个命令:

  • df 查看容量使用情况

  • vmstat 查看读写信息

  • iostat 查看读写速度

df 命令

我们还可以使用 df 属性来查看磁盘的使用信息:

从上面可以看到/dev/vda1这个磁盘,使用了 7% 的容量,还有 36G左右的容量可以使用。

vmstat 命令

此外还能用 vmstat 来查看磁盘的读写情况。

查看磁盘读写信息

查看具体磁盘的读写信息

上面的命令查看/dev/vda1磁盘的读写信息。

iostat 命令

除了 vmstat 之外,iostat 也常用来查看磁盘信息。

Linux系统中的 iostat是 IO statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。

定时定量刷新信息

每 2 秒刷新一次,一共显示 3 次。

显示指定磁盘信息

 
 

上述命令显示指定查看/dev/vda1磁盘的信息。

网络

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

猜你喜欢

转载自blog.csdn.net/Dongguabai/article/details/82701687