瓶颈分析

Top指令: CPU/内存情况

top
# top指令可以显示总体CPU占用率、内存使用率和交换情况,以及所有进程对应的CPU、内存占用情况

终端下使用该指令示例结果:

 

上图对一些重要的参数进行了简单标识,笔者这里使用的是XShell对远程Linux服务器进行连接和管理。
可以看到,在 top 指令返回的结果中,CPU和内存的占用信息都十分详细:

第一行中的Load Average则是Linux系统中任务调度队列里1分钟、5分钟与15分钟任务的负载(有关Linux系统任务调度相关内容可参阅高等教育出版社的《操作系统概念》);
第三行中用户模态和内核模态的分别占用率以及空闲CPU都反应了当前CPU的总体占用情况。I/O等待占CPU时间要注意,如果此项过高可能是I/O读写出现了故障或者瓶颈;
第四行是物理内存的使用情况,一般来说,内存根据实际需要配置,增添看当前是否够用,这方面没有什么技巧。
第五行是交换内存的使用情况。关于交换内存,首先,交换内存是指在等待或者被挂起的进程被交换到辅存(SSD、机械硬盘)。这样,能把空闲的进程腾出来,把空间让给更加活跃的进程。因此,交换内存的性能是低于物理内存的。当交换内存占用过大时,一方面可能是空闲进程多,还有一方面要注意的可能就是物理内存不够用,大量进程都被交换到了这里。
而下面的列表,则是各个进程的具体情况。比如,图中的php-fpm就反映了PHP的运行情况,同样还有mysqld可以反应MySQL数据库的运行情况

  

IOStat指令: 磁盘情况

iostat -d -k 2
# iostat主要用来显示磁盘IO情况,这里-d、-k、2是三个常加的参数:
#    -d   表示显示设备(磁盘)使用状态
#    -k   某些使用block为单位的列强制使用Kilobytes为单位
#    2    表示数据显示每隔2秒刷新一次。可以使用Ctrl+C来终止输出

终端下使用该指令示例结果:

如上图,命令执行后每两秒钟会向终端输出一次当前的I/O状况。这些数据的具体含义是:

tps:该设备每秒的I/O请求次数,即频率;
kB_read/s:每秒从设备读取的数据量;
kB_wrtn/s:每秒向设备写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;

更高级的用法:

iostat -d -x -k 1 10
# 这里添加了几个参数 -x 与 1 后面的 10
#   -x       表示显示和io相关的扩展数据
#   1 10     1 表示每1秒刷新一次,1 后跟 10 表示一共输出10次数据
avgrq-sz:平均请求扇区的大小
avgqu-sz:是平均请求队列的长度。毫无疑问,队列长度越短越好。
await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
svctm:表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

 

转载于:https://www.cnblogs.com/nr-zhang/p/10472021.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习笔记11-2——Spring5

文章目录7.Bean的自动装配自动装配说明测试环境搭建byName(按名称自动装配)测试byName运行机制小结:byType(按类型自动装配)测试使用注解进行自动装配AutowiredQualifierResourceAutowired与Resource异同8.使用注解开发…

HDU-5050 java大数

题意 给出一对长和宽 输出在这个长和宽之下 尽可能大的分出全部相等的小正方形的边长 输入输出都用二进制表示 输入最大是2^1000分析 两个长度下都可以分出来就是gcd code import java.math.BigInteger; import java.util.Scanner;public class Main {static Scanner sc ne…

频率域平滑滤波器

频率域滤波增强方法 理想低通滤波器 理想低通滤波器(Ideal Lowpass Filters-ILPF) 尽管理想低通滤波器在数学上定义清楚,在计算机模拟中也可 实现,但在截止频率处直上直下的理想低通滤波器是不能用实际的 电子器件实现的。 理想滤波器有陡峭频率的截止…

[leetcode][JAVA]面试题第[1028]题[迭代]

【问题描述】[困难] 我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的…

HDU-5023 线段树染色问题+延时标记

题意 给我们1-n的区间段 两种操作 P a b c 表示把a到b染成c颜色 Q a b 表示求a到b的颜色种类数量 注意初始全部先染成颜色2 分析 线段树经典染色问题 可以用二进制来表示颜色数量 一共30个颜色 那么最多也就是30位 不会超过int的范围 二进制下第x位为1表示有x1的颜色 …

频率域锐化滤波器

频率域锐化滤波器 (Frequency Sharpening Filters ) 图像的边缘、细节主要位于高频部分,而图 像的模糊是由于高频成分比较弱产生的。 频率域锐化就是为了消除模糊,突出边缘。 采用高通滤波器让高频成分通过,使低频成 …

1033 旧键盘打字

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中…

Node js redis

const redis require(redis);//redis const client redis.createClient(8888, 172.16.4.2); //redis操作client.set("hello", "{\"a\":\"1\", \"b\":\"2\"}") client.get("hello", function(err, val…

6用NetBeans进行JSP开发

用NetBeans进行JSP开发 NetBeans

关于GCD的证明

关于GCD欧几里得算法的证明过程: 证明一: 有两个数 a b 设这两个数的gcd(a,b) g 那么假设其中比较大的数 a a k*b r; 那么当我们对a求对b的最大公约数时 如果没有余数r 那么gcd 就等于b 那么现在有r了 所以gcd 的取值就取决于r了 因为现在我们…

Java学习笔记12——JVM入门

文章目录JVM简介和体系结构JVM的位置JVM的体系结构类加载器双亲委派机制沙箱安全机制(了解即可)NativePC寄存器方法区栈三种JVM堆新生区永久区堆内存调优Jprofiler的使用GC(垃圾回收)引用计数法复制算法标记清除法标记压缩法GC算法…

[Leedcode][JAVA][第125题][验证回文串][双指针][String]

【问题描述】[简单] 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama" 输…

面向对象之:继承

一:什么面向对象的继承? 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而…

7用Eclipse进行JSP开发

用Eclipse进行JSP开发 Eclipse简介和下载 Eclipse的发展 什么是Eclipse Eclipse下载 用Eclipse进行JSP开发 软件环境配置 安装JDK,配置Java运行环境 安装Tomcat服务器(服务器能够正常启动和关闭) 安装Eclipse JSP开发

求递归算法时间复杂度:递归树

引用自:http://www.cnblogs.com/wu8685/archive/2010/12/21/1912347.html 递归算法时间复杂度的计算方程式一个递归方程: 在引入递归树之前可以考虑一个例子: T(n) 2T(n/2) n2 迭代2次可以得: T(n) n2 2(2T(n/4) (n/2) 2) 还…

[Leetcode][JAVA]第[29]题[两数相除][二分法]

【问题描述】[中等] 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,…

8.用MyEclipse进行JSP开发

用MyEclipse进行JSP开发

Hihocoer 1336 - Matrix Sum 二维树状数组

题意 给我们个n*n的矩阵 有m个操作让我们 操作有两种 Add x y v对(x,y)上的元素加v Sum x1 y1 x2 y2 对(x1,y1)为左上角(x2,y2)为右下角的矩阵求和并mod 1e97 初始矩阵每个元素都是0 1 ≤ N ≤ 1000, 1 ≤ M ≤ 100000 For each Add operation: 0 ≤ x < N, 0 ≤ y < N…

Java学习笔记13-1——SpringMVC

文章目录1.什么是MVC回顾Servlet2.什么是SpringMVC概述中心控制器SpringMVC执行原理3.第一个SpringMVC 程序使用XML配置实现使用注解实现4.控制器和RestFul风格控制器Controller实现Controller接口使用注解ControllerRequestMappingRestFul 风格扩展&#xff1a;小黄鸭调试法5.…

端口占用怎么查找

D:\Users\hp\Documents\NetBeansProjects\WebApplication1\nbproject\build-impl.xml:1030: Deployment error: Starting of Tomcat failed, the server port 8080 is already in use. netstat -aon|findstr "8080" 查看端口 查看端口的进程 记住3306 tasklist|fi…