生产服务器变慢了,如何排查思路?

作为一名软件开发者,平时关注点更多是在程序开发上,但掌握一些运维知识点还是很有必要的,不仅可以提高我们自身的知识面,还可以方便定位问题,有利于我们解决问题的能力。所以我觉得有必要掌握。

张工是一名程序员,做java开发,有次到一家软件公司应聘java开发岗位,面试官就问了他这样一个问题:

生产服务器变慢了,如何排查思路?

张工由于平时对运维知识点掌握得比较少,回答起来也就没有那么充分。对于这个问题,

一般可以从下面几点入手:服务器的整体情况, CPU,内存,磁盘,磁盘IO,网络IO。

这需要我们掌握几个比较常见的linux 命令

1.top命令

top命令可以查看服务器整体使用情况

如图:

在这里插入图片描述

如果你平时很少使用linux命令,第一眼看这张图,可能会一头雾水,别急,下面我们一行一行来解释下。

第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)

第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵尸尸的进程数。一般情况下,只要没有僵尸的进程,表示问题不大。

第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。

第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。

第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。

第6行里面主要看 PID 和 COMMAND 这两个参数,其中 PID 就是进程 ID , COMMAND 就是执行的命令。

在当前这个界面,我们只要在键盘上按下数字1就能够看到各个CPU的具体使用情况了。

如图:

在这里插入图片描述

2.查看cpu命令 vmstat

上面我们通过top命令,然后按键盘数字键1能够查看CPU的使用情况,步骤有点绕,那么有没有更简洁的方式了解 CPU 使用情况的话,答案是肯定的,常用的命令是 vmstat 。

vmstat命令使用一般是通过两个参数来完成,第一个参数表示采样的时间间隔,(单位秒),第二个参数是采样的次数,例如:

vmstat -n 5 3

意思就是隔5秒取样一次,一共取样3次。

如图:

在这里插入图片描述

返回了这么一系列参数,一般主要关注procs和cpu这两个就足够了。

procs :

r :运行和等待CPU时间片的进程数,一般来说整个系统的运行队列不要超过总核数的2倍,要不然系统可能撑不住了。

b : 等待资源的进程数,比如正在等待磁盘IO、网络IO

cpu :

us :用户进程消耗 CPU 时间百分比, us 值高的话,说明用户进程消耗 CPU 时间比较长,如果长期值大于50%的话,那就说明程序还有需要优化的空间。

sy :内核进程消耗的 CPU 时间百分比

us+sy 参考值为80% ,如果大于这个值的话,说明CPU可能不足,需要排查哪些任务在运行导致CPU过高了。

3.查看内存命令 free

查看内存情况使用情况 free ,

它主要有三个命令:

free

free -g

free -m

个人习惯用 free -m,我们来看看这三种方法有什么不同。

在这里插入图片描述

通过free命令,我们看到 8008868 这个值,但并不能第一时间知道到底有多大,

free -g 这个命令返回结果做了四舍五入了

free -m 我个人觉得,相对另外两个命令来说,还是比较清晰的,一目了然。

其中:

Mem:表示物理内存统计

-/+ buffers/cached:表示物理内存的缓存统计

Swap:表示硬盘上交换分区的使用情况

4.查看磁盘使用情况 df

查看磁盘的整体情况

命令:df

参数:

-a:列出所有的文件系统,包括系统特有的/proc等文件系统

-k:以KB的容量显示各文件系统

-m:以MB的容量显示各文件系统

-h:以人们较易阅读的GB,MB,KB等格式自行显示

-H:以M=1000K替代M=1024K的进位方式

-T:显示文件系统类型

-i:不用硬盘容量,而以inode的数量来显示

-l:只显示本机的文件系统

如果排查磁盘问题的话,首先要看的就是磁盘空间够不够,

查看磁盘空间就是 df 或者 df -h 这两个命令了

在这里插入图片描述

排查磁盘问题时,首先要看磁盘空间够不够。

记得刚接触java编程时,编写一个上传文件的接口,上线后刚开始没什么问题,上线一段时间后,图片上传总是失败了,后来经排查,是磁盘的问题。

5.磁盘io iostat

说到磁盘IO相信你第一时间会想到数据库写入IO,我们平时在对数据库进行操作时,第一要考虑到的就是磁盘 IO 操作,避免写入IO大,导致数据库压力大。

检查磁盘 IO 情况的命令就是 iostat

iostat -xdk 5 3

有没有留意到这个vmstat 命令有些类似

同样有很多指标,我们重点关注下面几个就足够了

rkB/s :每秒读取数据量 kB ;

wkB/s :每秒写入数据量 kB ;

svctm :I/O 请求的平均服务时间,单位毫秒;

util :如果这个值接近 100% 说明磁盘带宽满了,需要优化程序或是增加磁盘

在这里插入图片描述

6.网络io sar命令

同样网络io sar命令 :

sar -n DEV 5 3

在这里插入图片描述

其中:

IFACE 本地网卡接口的名称

rxpck/s 每秒钟接受的数据包

txpck/s 每秒钟发送的数据库

rxKB/S 每秒钟接受的数据包大小,单位为KB

txKB/S 每秒钟发送的数据包大小,单位为KB

rxcmp/s 每秒钟接受的压缩数据包

txcmp/s 每秒钟发送的压缩包

rxmcst/s 每秒钟接收的多播数据包

拓展:

实用技能:常用的linux命令

查看硬件信息相关命令:

ifconfig、free、fdisk、ethtool、mii-tool、dmidecode、dmesg、lspci

系统性能监视高级命令:

uptime、top、free、vmstat、mpstat、iostat、sar、chkconfig

查看内存的命令:

top、free、vmstat、mpstat、iostat、sar等

用于进程的命令:ipcs、ipcrm、lsof、strace、lstrace等

作者:洪生鹏
地址:https://www.toutiao.com/article/7057897120711705102/?log_from=46cdc34b966cf_1650341461830

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值