5 种方法排查 Linux 系统运行速度慢的现象

往往在实际工作中,难免会遇到服务器系统运行速度缓慢的现象,那么,究竟遇到这种现象时,我们该怎么办?下面针对此问题进一步总结遇到该现象时,将如何来判断到底是哪个正在运行的进程、CPU 运行状态、内存运行是否过载、交换内存区是否已满、以及硬盘是否运行正常等相关因素来进行判断。
在这里插入图片描述

检查 CPU 的信息

相信大家,遇到该现象时,首先会检查 CPU 的信息,在 Linux 系统中,提供了 proc 文件系统显示系统的软硬件信息。那么可以执行命令 cat /proc/cpuinfo文件系统中查看 CPU 的提供商和相关详细配置信息;

# cat /proc/cpuinfo

在这里插入图片描述

# lscpu

在这里插入图片描述
通过上述两条命令 cat /proc/cpuinfo 和 lscpu 将显示了有关 CPU 的详细信息。

简单说明几项输出的含义:

  • vendor_id:CPU 制造商。
  • model name:表示 CPU 的制造商、型号和速度。本文中是 2.20GHz 的英特(R)酷睿(TM)CPU。
  • cpu MHz:用于测量通道、总线和计算机内部时钟的传输速度。本文中传输速度是 2194.919。
  • cache size:CPU 二级缓存大小。
  • cpuid level:执行 cpuid 指令前,eax 寄存器中的值,根据不同的值 cpuid 指令会返回不同的内容。
  • bogomips:bogo 是 bogus(伪)的意思,MIPS 是指每秒百万条指令。它是显示系统性能的独立程序。

使用 top 命令检查 CPU 负载

除了上述检查的情况之外,还可以使用命令 top 来检查 CPU 负载,将实时显示 process 的动态。资源使用最高的进程排在最前面。

参数:

-c:显示完整命令;
-b:以批处理模式显示程序信息;
-d NUM:设置信息更新次数;
-n NUM:显示更新十次后退出;
-p PID:将显示指定的进程信息;
-S:以累积模式显示程序信息;
在这里插入图片描述

利用 iotop 命令进行检查

假如你想知道到底哪个进程产生了 IO,数据读取速度等信息,这个时候就需要 iotop 这个工具了。它的输出和 top 命令类似;

参数:

-o:只显示正在产生 I/O 的进程或线程;
-b:非交互模式,一般用来记录日志;
-n NUM:设置监测的次数,默认无限;
-d SEC:设置每次监测的间隔,默认 1 秒;
-p PID:指定监测的进程/线程;
-u USER:指定监测某个用户产生的 I/O;
-P:仅显示进程,默认 iotop 显示所有线程;
-a:显示累积的 I/O,而不是带宽;
-k:使用 kb 单位进行显示;
-t:时间戳;;
-q:只在第一次监测时显示列名;
-qq:将永远不显示列名;
-qqq:将永远不显示 I/O 汇总;
在这里插入图片描述

检查启动的服务

service --status-all 该命令查看所有服务当前的运行状态。将按照字母的顺序运行所有的 init 脚本。

# service --status-all

在这里插入图片描述

chkconfig --list 显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。

# chkconfig --list

在这里插入图片描述
initctl 是守护进程控制工具,管理员可以与 Upstart 守护进程进行通信和交互。

# initctl list

在这里插入图片描述

利用 free 命令来检查闲置内存空间

free 命令:用于显示内存状态,会显示内存的使用情况,实体内存,虚拟交换内存,共享内存,以及系统核心使用的缓冲区等等;

语法:

free [-bkmotV] [-s <间隔秒数>]

参数:

-b:以 byte 为单位显示内存使用情况;
-k:以 KB 为单位显示内存使用情况;
-m:以 MB 为单位显示内存使用情况;
-o:不显示缓冲区调节列;
-t:显示内存总和列;
-V:显示版本信息;
-s <间隔秒速>:将以动态的形式持续观察内存使用情况;

上述 free 命令各项参数实例

在这里插入图片描述
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐