java高级面试题——生产环境服务器变慢,诊断思路和性能评估

生产环境服务器变慢,诊断思路和性能评估谈谈

生产环境服务器变慢的原因很多,从整机,CPU,内存,磁盘,网络IO等方面查看,根据具体情况优化。

整机:top命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

我们知道判断一个系统的负载可以使用top,uptime等命令去查看,load average它分别记录了一分钟、五分钟、以及十五分钟的系统平均负载

$ top

在这里插入图片描述
load average三个值 相加的和除以3再乘以100%,如果高于60%,说明系统负载大。

cpu:vmstat

vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

$ vmstat -n 2 3

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

额外

查看所有cpu核信息

mpstat -P ALL 5 2

表示每5秒产生一个报告,总共产生2个。
在这里插入图片描述

Linux中mpstat命令参数详解

每个进程使用CPU的用量分解信息

pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

pidstat使用-p选项,我们可以查看特定进程的系统资源使用情况
使用-u选项,pidstat将显示各活动进程的cpu使用统计,执行pidstat -u与单独执行pidstat的效果一样。

pidstat -u 1 -p 进程编号

每秒钟采样一次,打印出详细情况。
在这里插入图片描述

内存:free

怎么观察内存使用问题,free是很好用的一个命令
参数-m以MB为单位显示内存使用情况。

$ free
              total        used        free      shared  buff/cache   available
Mem:        4000436     1192152      266780       53844     2541504     2468412
Swap:       4194300         524     4193776

$ free -g
              total        used        free      shared  buff/cache   available
Mem:              3           1           0           0           2           2
Swap:             3           0           3

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3906        1163         260          52        2482        2410
Swap:          4095           0        4095

经验值

  • 应用程序可用内存/系统物理内存>70%内存充足
  • 应用程序可用内存/系统物理内存<20%内存不足,需要增加内存
  • 20%<应用程序可用内存/系统物理内存<70%内存基本够用

额外

pidstat使用-r选项,pidstat将显示各活动进程的内存使用统计

pidstat -p 进程号 -r 采样间隔秒数

Linux 运行进程实时监控pidstat命令详解

磁盘: df

$ df -h
文件系统        容量  已用  可用 已用% 挂载点
udev            1.9G     0  1.9G    0% /dev
tmpfs           391M  1.5M  390M    1% /run
/dev/sda1        28G   20G  7.1G   74% /
tmpfs           2.0G     0  2.0G    0% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           2.0G     0  2.0G    0% /sys/fs/cgroup
tmpfs           391M   20K  391M    1% /run/user/1000

可以看到,28G用了20G,已用74%

磁盘: IO

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

iostat -xdk 2 3

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。3表示,取样3次。

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

额外

pidstat 使用-d选项,我们可以查看进程IO的统计信息

pidstat -d 采样间隔秒数 -p 进程号

在这里插入图片描述
这里的程序是一个死循环打印程序,所以磁盘IO占用不大。

网络IO

ifstat工具是个网络接口监测工具,比较简单看网络流量

下载
http://gael.roualland.free.fr/ifstat/ (官网)

wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz

编译安装

tar -zxvf ifstat-1.1.tar.gz
cd ifstat-1.1
./configure            #默认会安装到/usr/local/bin/目录中
make
make  install

注释:执行which ifstat输出/usr/local/bin/ifstat

#ifstat
       eth0                eth1       
 KB/s in  KB/s out   KB/s in  KB/s out
    0.07      0.20      0.00      0.00
    0.07      0.15      0.58      0.00

参考

你需要知道的 16 个 Linux 服务器监控命令
Linux/Unix笔记本

猜你喜欢

转载自blog.csdn.net/e891377/article/details/108790671