精华内容
下载资源
问答
  • * 推荐阅读 **我说精通字符串,面试官竟然问我Java中的String有没有长度限制?...后端们最怕的事情之一就是服务器的负载突然飙升,这可能又意味着一个个夺目Call马上要打过来了。碰到这种情况怎么办,大家第一反应...

    * 推荐阅读 *

    *我说精通字符串,面试官竟然问我Java中的String有没有长度限制?

    *国内Java面试总是问StringBuffer?档次为什么这么低?

    *Java 面试,如何坐等 offer?

    *秋招Java岗:最全BAT大厂面试题整理

    *字节跳动的面试难吗?我该如何应对?

    220fae60-e855-4986-81f2-313c7f517787

    后端们最怕的事情之一就是服务器的负载突然飙升,这可能又意味着一个个夺目Call马上要打过来了。碰到这种情况怎么办,大家第一反应一定是登录到服务器上,先敲一个top命令看看Load Average吧。今天这篇文章和大家说说怎么看这个“Load Average”。

    01 Load Average

    d1ca3aef98db4461a6408539c3237fa2

    很多人说Load Average这一个指标就能说明系统负载高了,这句话是对的。那么具体是哪里压力大了呢?这三个数值是怎么计算出来的呢?可能很多人一下子都说不上来。

    先来说说定义吧:在一段时间内,CPU正在处理以及等待CPU处理的进程数之和。三个数字分别代表了1分钟,5分钟,15分钟的统计值。

    所以,这个数值的确能反应服务器的负载情况。但是,这个数值高了也并不能直接代表这台机器的性能有问题。可能是因为正在进行CPU密集型的计算,也有可能是因为I/O问题导致运行队列堵了。所以,当我们看到这个数值飙升的时候,还得具体问题具体分析。直接升级机器是简单粗暴,但是治标不治本。

    02 top命令一行一行看

    top命令输出了很多参数,真正的服务器负载情况我们要综合其他参数一起看。

    第一行:top - 20:41:08 up 18 days, 5:24, 2 users, load average: 0.04, 0.03, 0.05 top:当前时间up:机器运行了多少时间users:当前有多少用户load average:分别是过去1分钟,5分钟,15分钟的负载

    具体需要关注的果然还是load average这三个数值。大家都知道,一个CPU在一个时间片里面只能运行一个进程,CPU核数的多少直接影响到这台机器在同时间能运行的进程数。所以一般来说Load Average的数值别超过这台机器的总核数,就基本没啥问题。

    第二行:Tasks: 216 total, 1 running, 215 sleeping, 0 stopped, 0 zombieTasks:当前有多少进程running:正在运行的进程sleeping:正在休眠的进程stopped:停止的进程zombie:僵尸进程

    running越多,服务器自然压力越大。

    第三行:%Cpu(s): 0.2 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stus: 用户进程占CPU的使用率sy: 系统进程占CPU的使用率ni: 用户进程空间改变过优先级id: 空闲CPU占用率wa: 等待输入输出的CPU时间百分比hi: 硬件的中断请求si: 软件的中断请求st: steal time

    这一行代表了CPU的使用情况,us长期过高,表明用户进程占用了大量的CPU时间。us+sy如果长期超过80或者90,可能就代表了CPU性能不足,需要加CPU了。

    第四行&第五行KiB Mem : 65810456 total, 30324416 free, 9862224 used, 25623816 buff/cacheKiB Swap: 7999484 total, 7999484 free, 0 used. 54807988 avail Memtotal:内存总量free:空闲内存used:使用的buffer/cache: 写缓存/读缓存

    第四第五行分别是内存信息和swap信息。所有程序的运行都是在内存中进行的,所以内存的性能对服务器来说非常重要。不过当内存的free变少的时候,其实我们并不需要太紧张。真正需要看的是Swap中的used信息。Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了。

    第五行往下 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 19868 root 20 0 19.733g 369980 15180 S 0.7 0.6 129:53.91 java 19682 root 20 0 19.859g 5.766g 22252 S 0.3 9.2 139:42.81 java 54625 100 20 0 50868 33512 4104 S 0.3 0.1 0:04.68 fluentd PID:进程idUSER:进程所有者PR:优先级。数值越大优先级越高NI:nice值,负值表示高优先级,正值表示低优先级VIRT:进程使用的虚拟内存总量SWAP:进程使用的虚拟内存中被换出的大小RES:进程使用的、未被换出的物理内存大小SHR:共享内存大小SHR:共享内存大小S:进程状态。D表示不可中断的睡眠状态;R表示运行;S表示睡眠;T表示跟踪/停止;Z表示僵尸进程。%CPU:上次更新到现在的CPU占用百分比 ;%MEM:进程使用的物理内存百分比 ;TIME+:进程使用的CPU时间总计,单位1/100秒;COMMAND:命令名/命令行

    这些就是进程信息了,从这里可以看到哪些进程占用系统资源的概况。

    03 其他命令

    top当然是我们最常见的查看系统状况的命令。其他命令还有很多。vmstat,w,uptime ,iostat这些都是常用的命令。

    04 总结

    看懂这些具体参数以后,就知道自己的代码到底哪方面需要改进了,是优化内存消耗,还是优化你的代码逻辑,当然无脑堆机器也可以,只要你说服的了老板!

    如果觉得有所收获的话可以点赞关注我和转发分享给更多的程序猿们哦~

    c4363be45c8841eb91843df6253bbc74
    展开全文
  • 在学习平均负载之前,我们需要了解相关指标,根据指标清楚相关问题。正因为如此,我们从浅入深了解如下知识。常用的相关命令平均负载相关工具了解案例解析常用的相关命令常用的top命令,uptime命令,htop命令命令...

    平均负载?没有那么难

    前言

    作为一名开发,我们绕不过去的一道坎是在服务器上对系统进行监控,并且当系统出现异常情况,需要快速排查,我们今天了解的平均负载就是监控中重要的一环。

    在学习平均负载之前,我们需要了解相关指标,根据指标看清楚相关问题。正因为如此,我们从浅入深了解如下知识。

    1. 常用的相关命令
    2. 平均负载
    3. 相关工具了解
    4. 案例解析

    常用的相关命令

    常用的top命令,uptime命令,htop命令命令。

    top

    常用的性能分析工具,可以实时动态的查看系统整体情况和各个进程的资源占用情况,top命令提供动态互动式界面,还提供了热键式操作。

    关于top命令详解可以参考 https://man.linuxde.net/top.有top命令的详细解析。该网站提供很多命令查询,如果命令忘记了可以上去查询。

    注意:该网站是一个可以被收藏的工具网站

    f846a31ce7b94ff6ac5f611245ed011e

    uptime

    显示系统运行时间与系统的平均负载,显示时间依次为:现在时间,系统已经运行了多长时间,几个在线用户,平均负载。 可以结合watch使用。

    ruiqi@ruiqi:~/content$ uptime15:24:41 up 3 min, 2 users, load average: 0.34, 0.48, 0.22

    htop

    htop是比top更详细的监控软件,操作上更加方便。有如下优势:

    1. 操作上比top相对来说简单
    2. 默认支持图形界面的鼠标操作
    3. 横向或者纵向的浏览进程列表,查看所有进程,当然也包括完整的命令行。

    还有更多的操作技巧,htop在各家的linux系统中并没有默认安装,需要在各家系统上进行安装。展示方式也跟top有类似的参照。

    cc384e91ec584eb3b557aa4afa07bfdb

    平均负载

    什么是平均负载

    在上面每个命令,都可以看到load average参数,这是平均负载的英文标识。三个顺序分别为1min,5min,15min。

    可能会有朋友说,平均负载不就是CPU使用率嘛?这句话说对也对,说不对也不对。

    那怎么说呢?

    一般分析负载情况可以分为以下三种:

    1. CPU密集型进程,需要大量消耗CPU资源,这时候大量的CPU消耗会导致平均负载的升高。
    2. IO密集型进程,需要等待IO,这时候也会导致负载的增高,但这种情况CPU的使用并不高。
    3. 还有一种就是等待CPU的情况,此时CPU消耗很高,cpu的等待也很高,平均负载也是很高的。

    说了平局负载升高的情况,那平均负载究竟是什么呢?

    在了解平均负载之前,先了解下Linux中进程的几种状态:

    • TASK_RUNNINT: 简称**R**,可执行状态
    • TASK_INTERRUPTIBLE:简称**S**,可中断的睡眠状态,能够响应信号。
    • TASK_UNINTERRUPTIBLE:简称**D**,不可中断的睡眠状态。该状态主要是显示内核在处理一些流程时,是不可中断的,不可中断状态可以认为是一种保护机制,来保证系统对进程和设备之间的一致性。
    • TASKSTOPPED || TASKTRACED:简称T,暂停状态或跟踪状态,
    • TASKDEAD - EXITZOMBIE :简称Z,退出状态,进程为僵尸进程,该进程不可被kill,不响应任务信号。
    • TASKDEAD-EXITDEAD: 简称X,退出状态,进程即将被销毁。

    平均负载呢,可以简单地理解为在一定时间内,系统处于可运行状态不可中断状态的平均进程数。

    1. 可运行状态就是我们上面所说的TASK_RUNNING,可运行状态,该状态包含正在使用CPU或者等待CPU的进程。
    2. 不可中断状态的进程:是我们上面所说的TASK_UNINTERRUPTIBLE,简称D的进程。

    所以我们可以看到平均负载并不只是可运行状态的进程,还包含着不可中断的进程。

    平均负载的评判标准

    利用所说的top,uptime,htop命令,很方便的查看系统现在负载的状况。

    但平均负载究竟是多少才算是不合理的数据呢?由于每个服务器或者客户机所拥有的的硬件配置不同,我们并不能简简单单的定义一个具体数值来说明平均负载的好与坏。

    但我们了解平均负载最理想的情况就是等于CPU的个数,根据这一条,我们首先确定机器的CPU个数,方式有多种。

    CPU的个数

    • 从文件中读取
     $ grep 'model name' /proc/cpuinfo model name : Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz model name : Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz 或者再用wc -l 统计一下 $ grep 'model name' /proc/cpuinfo | wc -l 2
    • top/htop
    • 使用top 再按快捷键1就可以看出有多少个CPU
    d9a13fa89ef14a88a60c473d0afb7128
    • 使用htop,看数字可以看出有多少CPU
    d2bd0f339a0f41afbd6b09add081261f

    评断标准

    了解CPU个数之后,视角转回到load average上,发现该参数有三个数值,分别为1m,5m,15m,那我们该用哪个时间代表负载的标准呢?

    其实也很简单,他们分表代表的是1m,5m,15m内的负载均值情况,代表这段时间内负载运行的趋势。根据不同时间内的值大小,可以评判出系统负载变化的趋势,方便得出平均负载的变化。一般情况下,超过系统可容纳负载70%的时候,监控人员就需要引起注意,并查看系统是否出现异常情况。

    当然该70%只是理论值,需要根据不同的机器做不同的判断,比如服务器属于老旧服务器,对于其负载指标可以降低负载均值。负载过高时,及时作出应急措施。

    相关工具了解

    由于我们并没有实际的环境实现,则需要我们进行环境的模拟,那么在实现案例之前需要先学习相关工具,帮助我们辅助实验环境的搭建

    Stress

    stress 是压力测试工具,是Posix系统下生成CPU/Menory/IO/Disk负载的工具

    Stress 安装

    • ubuntu上安装
    sudo apt-get install stress
    • centos 安装
    Centos 7## 启用第三方源rpm -ivh http://apt.sw.be/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm## 安装stressyum install stressCentos 6## 启用三方源yum install epel-release## 安装Stressyum install stress

    Stress 参数说明

    -? 显示帮助信息-v 显示版本号-q 不显示运行信息-n,--dry-run 显示已经完成的指令执行情况-t --timeout N 指定运行N秒后停止 --backoff N 等待N微妙后开始运行-c --cpu 产生n个进程 每个进程都反复不停的计算随机数的平方根-i --io 产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数 --vm-bytes B 指定malloc时内存的字节数 (默认256MB) --vm-hang N 指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器-d --hadd n 产生n个执行write和unlink函数的进程 --hadd-bytes B 指定写的字节数,默认是1GB --hadd-noclean 不要将写入随机ASCII数据的文件Unlink时间单位可以为秒s,分m,小时h,天d,年y,文件大小单位可以为K,M,G

    Stress 使用教程

    • 多CPU
     stress -c 13
    699be50b5f85493fbecbd4179cf88d04
    • 多io操作
     stress --io 5 stress -i 5
    • 产生多个CPU与多个io进程并且定时1分钟停止
     stress -c 4 -i 4 --timeout 1m stress: info: [19613] dispatching hogs: 4 cpu, 4 io, 0 vm, 0 hdd stress: info: [19613] successful run completed in 60s
    • 输出文件到本地
     stress -d 1 --hdd-bytes 1G

    当然stress并不止这些内容,但有一点注意stress无法模拟更复杂的场景,并且stress的压力CPU是在用户态,内核态并没有产生压力。如果需要更复杂的压力测试我们还可以使用stress-ng。

    sysstat

    sysstat是常用的性能监控工具包,里面包含了多个性能工具。比如我们下面要用的mpstat,pidstat,iostat,sar等指令。

    安装

    1. ubuntu
    sudo apt-get install sysstat

    2.centos

    yum install sysstat

    mpstat

    mpstat会输出所有CPU的平均统计信息

    命令使用:

    ~$ mpstat -A 该命令等同于我们 mpstat -u -l ALL -p ALLLinux 4.15.0-55-generic (ruiqi) 08/31/2019 _x86_64_ (2 CPU)07:15:31 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle07:15:31 AM all 0.77 0.01 1.83 17.85 0.00 0.21 0.00 0.00 0.00 79.3207:15:31 AM 0 0.74 0.01 1.42 16.58 0.00 0.42 0.00 0.00 0.00 80.8307:15:31 AM 1 0.81 0.02 2.25 19.11 0.00 0.01 0.00 0.00 0.00 77.8107:15:31 AM NODE %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle07:15:31 AM all 0.77 0.01 1.83 17.85 0.00 0.21 0.00 0.00 0.00 79.3207:15:31 AM 0 0.76 0.01 1.80 17.49 0.00 0.21 0.00 0.00 0.00 77.7007:15:31 AM CPU intr/s07:15:31 AM all 177.2407:15:31 AM 0 118.2807:15:31 AM 1 119.0207:15:31 AM CPU 0/s 1/s 6/s 8/s 9/s 12/s 14/s 15/s 16/s 17/s 18/s 19/s 24/s 25/s 26/s 27/s 28/s 29/s 30/s 31/s 32/s 33/s 34/s 35/s 36/s 37/s 38/s 39/s 40/s 41/s 42/s 43/s 44/s 45/s 46/s 47/s 48/s 49/s 50/s 51/s 52/s 53/s 54/s 55/s 56/s 57/s 58/s NMI/s LOC/s SPU/s PMI/s IWI/s RTR/s RES/s CAL/s TLB/s TRM/s THR/s DFR/s MCE/s MCP/s HYP/s ERR/s MIS/s PIN/s NPI/s PIW/s07:15:31 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 42.52 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.59 0.13 0.00 0.00 41.94 0.00 0.00 0.00 0.00 16.35 0.18 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0007:15:31 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2.89 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.27 0.00 0.00 0.00 55.25 0.00 0.00 0.00 0.00 17.08 0.04 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.0007:15:31 AM CPU HI/s TIMER/s NET_TX/s NET_RX/s BLOCK/s IRQ_POLL/s TASKLET/s SCHED/s HRTIMER/s RCU/s07:15:31 AM 0 0.00 28.96 0.19 0.00 42.85 0.00 0.13 25.51 0.00 20.6507:15:31 AM 1 0.00 45.75 0.00 2.89 0.25 0.00 0.08 41.03 0.00 29.01

    命令说明:

    • P: 携带ALL, 将每个CPU的统计信息进行输出。
     ruiqi@ruiqi:~$ mpstat -P ALL Linux 4.15.0-55-generic (ruiqi) 08/31/2019 _x86_64_ (2 CPU) 07:17:31 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 07:17:31 AM all 0.77 0.01 1.83 17.83 0.00 0.21 0.00 0.00 0.00 79.34 07:17:31 AM 0 0.74 0.01 1.42 16.57 0.00 0.42 0.00 0.00 0.00 80.85 07:17:31 AM 1 0.80 0.02 2.25 19.09 0.00 0.01 0.00 0.00 0.00 77.83
    • N: 代表每隔几秒输出CPU的信息
    • I: 代表输出每个处理器的中断统计信息
    • u: 代表输出所有CPU的统计信息

    pidstat

    pidstat 用来监控进程和当前受内核管理的线程,并且还可以检查子进程和线程的状态

    pidstat -t -p 进程号 2 3 #每隔两秒对指定进程的cpu信息统计输出3次pidstat -p ALL # 展示所有进程信息pidstat -u 5 1 # 展示CPU信息,每五秒展示一组pidstat -d 2 # 输出io统计消息, 2秒为统计信息

    案例

    从上面例子可以看到负载升高的几种情景,为了帮助我们理解这方面的内容,则我们创建一个例子来演示下。

    机器环境如下

    搭建虚拟机环境:

    • 双核
    • 内存是2g
    • 操作系统是ubuntu18.04
    • 安装stress,top,htop

    CPU密集型进程

    CPU密集型进程,需要大量消耗CPU资源,这时候大量的CPU消耗会导致平均负载的升高。借助stress 模拟CPU密集进程。

    stress -c 10 --timeout 600

    使用top命令查看平均负载。

    9df23bd396774d0f8a741466cbcf09c8

    从图上可看到load average 正在逐步的升高。系统已经进入高负载。

    mpstat -p ALL 显示所有信息,检查是什么导致负载升高

    458f778bbe634b00b6d93905c75527a3

    由图上可知,CPU的使用率基本上都为100%而iowait等待则为0,代表平均负载的升高是由CPU使用率高导致的。

    那究竟怎么看是哪一个进程导致CPU使用率这么高的,在这里就可以使用pidstat命令查看。

    pidstat -p ALL # 展示所有进程信息pidstat -u 5 1 # 展示CPU信息,每五秒展示一组pidstat -d 2 # 输出io统计消息, 2秒为统计信息pidstat -t -p 进程号 2 3 #每隔两秒对指定进程的cpu信息统计输出3次

    other

    IO密集型进程,需要等待IO,这时候也会导致负载的增高,但这种情况CPU的使用并不高,多进程的方式造成的负载升高。

    这两种情况都是使用mpstat来观察负载,找到cpu超标还是io等待或者是进程多导致cpu等待造成的负载升高,最后使用pidstat找到对应的进程,检查其情况。

    总结

    本文主要描述平均负载来源,顺带的说了下压力测试工具stress,stress-ng,mpstat,pidstat指令。

    用这些工具辅助我们来进行系统监控与问题查找。

    ·END·

    路虽远,行则必至

    本文原发于 同名微信公众号「胖琪的升级之路」,回复「1024」你懂得,给个赞呗。

    微信ID:YoungRUIQ·END·

    展开全文
  • 概述今天主要带大家深入理解下CPU负载和cpu使用率方面的内容,下这中间是怎么计算的。CPU负载和 CPU使用率这两个从一定程度上都可以反映一台机器的繁忙程度.cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因...

    概述

    今天主要带大家深入理解下CPU负载和cpu使用率方面的内容,看下这中间是怎么计算的。


    CPU负载和 CPU使用率

    这两个从一定程度上都可以反映一台机器的繁忙程度.

    cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进入wait。

    平均负载(load average)是指某段时间内占用cpu时间的进程和等待cpu时间的进程数,这里等待cpu时间的进程是指等待被唤醒的进程,不包括处于wait状态进程。

    以上分析可以看出,一台机器很有可能处于低cpu使用率高负载的情况,因此看机器的繁忙程度应该结合两者,在cpu还空闲的情况下,如何提高io响应是减少负载的关键,很多人认为负载到几十了机器就非常繁忙了,其实如果这个时候cpu使用率比较低,则负载高可能不能很好说明问题,一旦cpu处理的进程处理完后,那些等待的进程也能立刻得到响应,这种情况下应该优化io读写速度。真到cpu使用率一直90%以上,即使平均负载只有个位数(比如某一个进程一直在运算),那机器其实也已经繁忙了~


    CPU负载的一个类比

    判断系统负荷是否过重,必须理解load average的真正含义。

    24d5c192f6bd15ee31e62a0fcbbe3ffb.png

    首先,假设最简单的情况,你的电脑只有一个CPU,所有的运算都必须由这个CPU来完成。

    那么不妨把这个CPU想象成一座大桥,桥上只有一根车道,所有车辆都必须从这根车道上通过。(很显然,这座桥只能单向通行。)

    系统负荷为0,意味着大桥上一辆车也没有。

    系统负荷为0.5,意味着大桥一半的路段有车。

    系统负荷为1.0,意味着大桥的所有路段都有车,也就是说大桥已经"满"了。但是必须注意的是,直到此时大桥还是能顺畅通行的。

    系统负荷为1.7,意味着车辆太多了,大桥已经被占满了(100%),后面等着上桥的车辆为桥面车辆的70%。以此类推,系统负荷2.0,意味着等待上桥的车辆与桥面的车辆一样多;系统负荷3.0,意味着等待上桥的车辆是桥面车辆的2倍。总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久。

    CPU的系统负荷,基本上等同于上面的类比。大桥的通行能力,就是CPU的最大工作量;桥梁上的车辆,就是一个个等待CPU处理的进程(process)。

    如果CPU每分钟最多处理100个进程,那么系统负荷0.2,意味着CPU在这1分钟里只处理20个进程;系统负荷1.0,意味着CPU在这1分钟里正好处理100个进程;系统负荷1.7,意味着除了CPU正在处理的100个进程以外,还有70个进程正排队等着CPU处理。

    为了电脑顺畅运行,系统负荷最好不要超过1.0,这样就没有进程需要等待了,所有进程都能第一时间得到处理。很显然,1.0是一个关键值,超过这个值,系统就不在最佳状态了,你要动手干预了。


    CPU负载-多处理器

    上面假设电脑只有1个CPU。如果电脑装了2个CPU,会发生什么情况呢?

    2个CPU,意味着电脑的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。

    还是用大桥来类比,两个CPU就意味着大桥有两根车道了,通车能力翻倍了。

    所以,2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量。推广开来,n个CPU的电脑,可接受的系统负荷最大为n.0。


    CPU负载-多核处理器

    芯片厂商往往在一个CPU内部,包含多个CPU核心,这被称为多核CPU。

    在系统负荷方面,多核CPU与多CPU效果类似,所以考虑系统负荷的时候,必须考虑这台电脑有几个CPU、每个CPU有几个核心。然后,把系统负荷除以总的核心数,只要每个核心的负荷不超过1.0,就表明电脑正常运行。

    怎么知道电脑有多少个CPU核心呢?

    • "cat /proc/cpuinfo"命令,可以查看CPU信息。
    • "grep -c 'model name' /proc/cpuinfo"命令,直接返回CPU的总核心数。
    a4aae6bcd2970b80ca9be37c6e07038b.png

    系统负荷的经验法则

    系统负荷的经验法则是:

    当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。

    当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。

    当系统负荷达到5.0,就表明系统有很严重的问题,长时间没有响应,或者接近死机了,正常不应该让系统达到这个值。

    对于我的机器,有8个core,那么,load多少合适呢?

    #grep 'model name' /proc/cpuinfo | wc -l#echo "0.7*24" |bc
    4abd2567d9f3cf75a58b601042959e63.png

    最佳观察时长

    我们一般在用top观察cpu负载时,其中的"load average"一共返回三个平均值----1分钟系统负荷、5分钟系统负荷,15分钟系统负荷,那么应该参考哪个值呢?

    8697e048c70e3f7c90e722ca2ebb39f9.png

    如果只有1分钟的系统负荷大于1.0,其他两个时间段都小于1.0,这表明只是暂时现象,问题不大。

    如果15分钟内,平均系统负荷大于1.0(调整CPU核心数之后),表明问题持续存在,不是暂时现象。所以,你应该主要观察"15分钟系统负荷",将它作为电脑正常运行的指标。


    后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

    fb8ca985b8284c5604aa01a6e80800a6.png
    展开全文
  • cpu负载

    2019-10-08 09:55:30
    查看cpu负载,我们经常会使用top,或者是uptime命令 但是这只能看到cpu的总体的负载情况。如果我们想看cpu每个核心的负载情况是看不到的。 所以我们可以用mpstat命令 服务器一共32核心 [root@kvm02 ~]# ...

    查看cpu负载,我们经常会使用top,或者是uptime命令

    但是这只能看到cpu的总体的负载情况。如果我们想看cpu每个核心的负载情况是看不到的。

    所以我们可以用mpstat命令

     

    服务器一共32核心

     

    [root@kvm02 ~]# mpstat -P ALL
    Linux 3.10.0-229.el7.x86_64 (kvm02) 2017年05月29日 _x86_64_ (32 CPU)

    14时54分10秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
    14时54分10秒 all 0.02 0.00 0.03 0.01 0.00 0.00 0.00 0.02 0.00 99.92
    14时54分10秒 0 0.02 0.00 0.05 0.04 0.00 0.00 0.00 0.04 0.00 99.84
    14时54分10秒 1 0.03 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 99.95
    14时54分10秒 2 0.01 0.00 0.06 0.00 0.00 0.00 0.00 0.04 0.00 99.89
    14时54分10秒 3 0.03 0.00 0.01 0.00 0.00 0.00 0.00 0.01 0.00 99.95
    14时54分10秒 4 0.02 0.00 0.06 0.00 0.00 0.00 0.00 0.05 0.00 99.87
    14时54分10秒 5 0.03 0.00 0.02 0.00 0.00 0.00 0.00 0.01 0.00 99.93
    14时54分10秒 6 0.01 0.00 0.06 0.00 0.00 0.00 0.00 0.04 0.00 99.89
    14时54分10秒 7 0.03 0.00 0.02 0.00 0.00 0.00 0.00 0.01 0.00 99.93
    14时54分10秒 8 0.01 0.00 0.05 0.00 0.00 0.00 0.00 0.04 0.00 99.89
    14时54分10秒 9 0.03 0.00 0.02 0.00 0.00 0.00 0.00 0.01 0.00 99.94
    14时54分10秒 10 0.01 0.00 0.06 0.00 0.00 0.00 0.00 0.05 0.00 99.88
    14时54分10秒 11 0.03 0.00 0.01 0.00 0.00 0.00 0.00 0.01 0.00 99.95
    14时54分10秒 12 0.01 0.00 0.06 0.00 0.00 0.00 0.00 0.04 0.00 99.89
    14时54分10秒 13 0.03 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 99.95
    14时54分10秒 14 0.01 0.00 0.06 0.00 0.00 0.00 0.00 0.05 0.00 99.88
    14时54分10秒 15 0.03 0.00 0.01 0.00 0.00 0.00 0.00 0.01 0.00 99.95
    14时54分10秒 16 0.00 0.00 0.04 0.00 0.00 0.00 0.00 0.04 0.00 99.91
    14时54分10秒 17 0.01 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 99.98
    14时54分10秒 18 0.03 0.00 0.07 0.00 0.00 0.00 0.00 0.03 0.00 99.87
    14时54分10秒 19 0.02 0.00 0.04 0.01 0.00 0.00 0.00 0.00 0.00 99.92
    14时54分10秒 20 0.01 0.00 0.06 0.00 0.00 0.00 0.00 0.05 0.00 99.87
    14时54分10秒 21 0.01 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00 99.96
    14时54分10秒 22 0.01 0.00 0.05 0.16 0.00 0.00 0.00 0.04 0.00 99.74
    14时54分10秒 23 0.01 0.00 0.02 0.00 0.00 0.00 0.00 0.00 0.00 99.97
    14时54分10秒 24 0.00 0.00 0.04 0.00 0.00 0.00 0.00 0.04 0.00 99.91
    14时54分10秒 25 0.01 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 99.99
    14时54分10秒 26 0.01 0.00 0.06 0.00 0.00 0.00 0.00 0.03 0.00 99.89
    14时54分10秒 27 0.01 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 99.98
    14时54分10秒 28 0.01 0.00 0.04 0.00 0.00 0.00 0.00 0.03 0.00 99.92
    14时54分10秒 29 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.99
    14时54分10秒 30 0.01 0.00 0.04 0.00 0.00 0.00 0.00 0.03 0.00 99.92
    14时54分10秒 31 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.98

     

    参数解释

    -P :表示监控哪个逻辑cpu

      ALL:表示监控所有cpu

      0-cpu核心总数 :表示查看指定逻辑cpu的负载

     

    例如:查看第20个逻辑cpu的负载情况

    [root@kvm02 ~]# mpstat -P 20

    Linux 3.10.0-229.el7.x86_64 (kvm02) 2017年05月29日 _x86_64_ (32 CPU)

     

    14时58分36秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
    14时58分36秒 20 0.01 0.00 0.06 0.00 0.00 0.00 0.00 0.05 0.00 99.87

     

    转载于:https://www.cnblogs.com/pangbing/p/6918076.html

    展开全文
  • 本文版权归西部数码所有,原文链接:https://www.https://www.west.cn/faq/list.asp?unid=2354方法:... cpu负载: 通过top命令查看: 主要“load average”可理解为分别表示前 1、5、15分钟的平均负荷。通常1...
  • CPU负载过高怎么办

    2019-08-13 10:10:04
    1、CPU负载过高 排错思路: 1>查看机器性能,是否是系统负载的问题 2>查看项目日志,发现开发代码里有大量的日志输出 通过top -c命令查看进程信息,找出问题进程内负载过高的线程id 在通过jstack命令查...
  • 叙述的比较简单,主要是我一段时间不看,这些想top vmstat mpstat iostat都不会用,用了其中的一些参数不太清晰是什么意思,所以自己写个方便也加深印象 如果没有装*.stat 可以yum install sysstat 一、关于top ...
  • linux下查看cpu负载及分析

    千次阅读 2018-07-01 15:29:32
    原文地址:http://blog.51cto.com/9486329/2073212linux下查看cpu负载有两个命令可以:uptime 和 top.其中load average的三个值分别表示1分钟、5分钟、15分钟的CPU负载情况,是运维需要经常关注的那么怎么确定这些...
  • 事情的背景如下:在某个新服务器上,新建了一个MySQL的实例,该服务器上面只有MySQL这一个进程,但是CPU负载却居高不下,使用top命令查询的结果如下:[dba_mysql@dba-mysql ~]$ toptop - 17:12:44 up 104 days, 20...
  • CPU负载的分析

    千次阅读 2016-06-06 12:04:31
    最近对我的本本(4核8线程)用top命令系统状况出现了CPU利用率超过200%的情况,非常诧异,查了下相关资料,把这个问题弄清楚了。 首先来分析下CPU Load load average: 0.09, 0.05, 0.01 分别是1分钟、5分钟、...
  • top查看cpu

    千次阅读 2019-03-21 21:34:27
    1. Linux下,如何每个CPU的使用率: #top-d 1 (此时会显示以1s的频率刷新系统负载显示,可以看到总的CPU负载情况,以及占CPU最高的进程id,进程名字等信息) (切换按下数字1,则可以在显示多个CPU和总CPU中...
  • 线上CPU负载过高处理

    2021-03-05 15:26:34
    线上CPU报警 占用率过 90% 告警了一晚上 第二天才的。 二、处理 1.top 命令 使用 top 命令查看后,load average 也是超负荷的状态,用户态的CPU占比 确实很高(us),而且是居高不下,然后我就找到占比高的...
  • 【运维】CPU负载

    2017-05-11 10:36:00
    最近对我的本本(4核8线程)用top命令系统状况出现了CPU利用率超过200%的情况,非常诧异,查了下相关资料,把这个问题弄清楚了。首先来分析下CPU Load load average: 0.09, 0.05, 0.01 分别是1分钟、5...
  • 收到一个mysql服务器负载告警,上去一,load average都飙到280多了,用topCPU跑到了336%,不过IO和内存的负载并不高,根据经验,应该又是一起索引引起的惨案了。 下processlist以及slow query情况,发现有...
  • top动态查看负载

    2017-01-13 16:29:16
    用vmstat查看到了系统的瓶颈在哪里,比如cpu不够、内存不够、或是...需要具体地去,这时需要用到一个工具:top[root@wy ~]# top #动态地3秒显示一次top - 14:57:51 up 1:03, 1 user, load average: 0.00, 0....
  • CPU监控学习前言作为一名开发,我们绕不过去的一道坎是在服务器上对系统进行监控,并且当系统出现异常情况,需要快速排查,我们今天了解的平均负载就是监控中重要的一环。在学习平均负载之前,我们需要了解相关指标...
  • 收到一个mysql服务器负载告警,上去一,load average都飙到280多了,用topCPU跑到了336%,不过IO和内存的负载并不高,根据经验,应该又是一起索引引起的惨案了。下processlist以及slow query情况,发现有...
  • 才子白:那我考考你,假如你发现测试服务器一个java进程cpu负载占用很高,如何用命令去排查具体是哪行代码引起的呢? 成子怯生生的问了一句:我可以百度吗? 1、首先查看系统资源占用信息,top看一下 top命令下...
  • 1. 周二新需求提测之后,运行到晚上,收到告警短信,生产环境CPU负载过高,先解决问题再排查,运维扩容,有问题机器下线重启上线,CPU使用率正常,服务正常响应。 2. 开始排查问题,把预留的一台有问题的机器用于...
  • mac top内存 cpu

    千次阅读 2017-05-14 18:01:42
    top命令可以一些负载情况top -s 20-s代表每隔20s更新一次,这样可以避免更新太快不清按内存排序orsize 回车按cpu排序ocpu 回车就是先按o 会显示primary key [-pid]:在后面输入cpu就是按cpu排序,rsize就是内存
  • 昨天下午看到数据平台服务器cpu利用率达到了98.94%,而且最近一段时间一直持续在70%以上,起来像是硬件资源到瓶颈需要扩容了,但仔细思考就会发现咱们的业务系统并不是一个高并发或者CPU密集型的应用,这个利用率...
  • 前几天碰到一个CPU负载较高的问题。从系统层面来,情况不是很严重,但是从应用的角度来说,已经感觉到很慢了。因为前端的调用频率还是比较高。所以会把这个问题放大。 使用top -c查看了基本的服务器信息。可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 394
精华内容 157
热门标签
关键字:

top看cpu负载