• linux系统发现系统变慢


    发现系统变慢首先执行top和uptime命令


    [root@localhost ~]# uptime
     02:32:11 up 10 min,  2 users,  load average: 0.00, 0.11, 0.15
    
    当前时间-系统运行时间-系统正在登陆的用户数-过去一分钟、五分钟、十五分钟的平均负载
    
    1. 如果1分钟、5分钟、15分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。
    2. 但如果1分钟的值远小于15 分钟的值,就说明系统最近1分钟的负载在减少,而过去15分钟内却有很大的负载。
    3. 反过来,如果1分钟的值远大于 15 分钟的值,就说明最近1分钟的负载在增加,这种增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。一旦1分钟的平均负载接近或超过了CPU的个数,就意味着系统正在发生过载的问题,这时就得分析调查是哪里导致的问题,并要想办法优化了。
    4. 当平均负载高于CPU数量的70%的时候就要查找原因了,一旦平均负载过高就会导致系统进程响应变慢,进而影响服务的正常功能

    CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;2I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;大量等待 CPU 的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。

    使用工具iostat(stress)、mpstat、pidstat 等工具,找出平均负载升高的根源

    yum install -y epel-release

    yum install -y stress

    yum install -y sysstat

    1. stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景
    2. 而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用到这个包的两个命令 mpstat 和 pidstat。
    3. mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有CPU的平均指标。
    4. pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标

    模拟环境

    [root@localhost ~]# stress --cpu 1 --timeout 600
    stress: info: [7272] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
    这是模拟CPU使用率超高环境,然后在第二个终端运行uptime查看平均负载
    
    

    然后在第三个终端查看CPU使用率的变化情况

    • 使用mpstat 命令

      [root@localhost ~]# mpstat -P ALL 5
      Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 	04/23/2020 	_x86_64_	(1 CPU)
      
      03:00:11 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      03:00:16 AM  all   99.60    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00    0.00
      03:00:16 AM    0   99.60    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00    0.00
      
      03:00:16 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      03:00:21 AM  all   99.60    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00    0.00
      03:00:21 AM    0   99.60    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00    0.00
      
      03:00:21 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      03:00:26 AM  all   99.60    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00    0.00
      03:00:26 AM    0   99.60    0.00    0.40    0.00    0.00    0.00    0.00    0.00    0.00    0.00
      
      

      这时候我们可以看到有一个CPU的使用率太高了,那么就用pidstat 找到这个进程

    • pidstat -u 5 2 间隔5秒后输出2组数据,-u表示CPU指标

    [root@localhost ~]# pidstat -u 5 2
    Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 	04/23/2020 	_x86_64_	(1 CPU)
    
    03:06:39 AM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
    03:06:44 AM     0      7275    0.20    0.20    0.00    0.20    0.40     0  watch
    03:06:44 AM     0      7861   98.80    0.00    0.00    0.80   98.80     0  stress
    03:06:44 AM     0      7901    0.00    0.20    0.00    0.00    0.20     0  pidstat
    这时可以看到是stress占用较高,可以用ps -ef|grep stress找出他的进程号用kill -9 杀掉
    [root@localhost ~]# ps -ef |grep stress
    root       7860   7201  0 03:06 pts/0    00:00:00 stress --cpu 1 --timeout 600
    root       7861   7860 99 03:06 pts/0    00:06:25 stress --cpu 1 --timeout 600
    root       8250   7233  0 03:12 pts/1    00:00:00 grep --color=auto stress
    [root@localhost ~]# kill -9 7860
    [root@localhost ~]# 
    
    

    开机自启动

    7 个运行级别

    1. init 0 关机

    2. init 6 重启

    3. init 5 图形化界面

    4. init 3 完整的多用户模式(命令行)

    5. init 2 多用户模式(没有文件系统和网络)

    6. init 1 单用户模式

  • 相关阅读:
    一段获取windows环境变量的代码
    尝试word2007的blog发布
    如何求一表所有行所有字段实际占用的空间
    如何查询全表扫描SQL
    Oracle 33个等待事件
    如何使用RMAN
    如何使用Diagnostics工具监控应用服务器
    如何查询每行数据的数据块信息
    如何理解recursive calls,db block gets和consistent gets
    如何编写批处理与SQLPLUS(例子)
  • 原文地址:https://www.cnblogs.com/zabcd/p/13293940.html
Copyright © 2020-2023  润新知