当前位置: 首页 > news >正文

(性能测试)磁盘关注的性能指标 网络瓶颈 带宽和宽带 数据库的性能瓶颈分析 数据库连接池 数据库死锁 JVM内存瓶颈分析 总结

目录

磁盘关注的性能指标

网络瓶颈

带宽和宽带

数据库的性能瓶颈分析

数据库连接池

数据库死锁

JVM内存瓶颈分析

总结


磁盘关注的性能指标

磁盘关注的是读写速度 磁盘的速度越快 处理的速度就越快 因为数据是需要读取到内存当中的

读入和写出都需要磁盘的

现在的磁盘分为两部分 一种是固态 另一种是机械的

固态的磁盘价格高,就是因为他的传输速度较高 

如果说是传输速度固态磁盘大概是在500M/s 机械硬盘的速度大概是在250M/s,甚至可能更低  但是和内存相比还是相差很远

查看的命令是iowait(用于查看CPU等待输入输出的完成时间的百分比)

后面的1 1 表示的是每秒取一次数据

上面图片中的最后一个值:%util 表示的是1s中有多少的百分比时间用于磁盘io 

所有的工作都是程序 只不过是系统程序 所有动的都是程序 

是程序说明就是要消耗CPU 所以可以通过查看CPU的使用情况来查看磁盘的使用情况

磁盘io的值过大 说明数据一直在内存和磁盘当中来回传输(input和output)

iowait和util两者的大小一般是匹配的  

网络瓶颈

网络和磁盘是非常相近的 关注的也是速度  

磁盘是从内存当中读入和写出 网络是和互联网之间的交互 这个也是速度 

对于网络而言 关注的是带宽 关注于实际速度和网络的总带宽进行对比

如果接近总带宽,说明网络是存在瓶颈的 需要进行扩容和优化

rx和tx分别表示的是输入和输出

命令

rx和tx分别表示的是输入和输出

测试的关注点:实际统计的数据的发送速率和接收速率 与网络的总带宽进行对比,查看使用的百分比(如果无限接近100%说明存在bug)

带宽和宽带

宽带:用户或者是业务维度来描述网络速率的方式 例如是20M的宽带 100M的宽带

宽带的速率单位bit/s 

带宽:速率单位是B(byte)/s 数据在网络中传输的速率

他俩之间的换算单位是1B=8bit 

这个过程只有运营商说的是带宽 

实际情况:1000M的宽带 只能对应的带宽速率是1000/8

数据库的性能瓶颈分析

慢查询是什么???

设置一个时间阀值:如果运行的时候时间超过了阈值,就是慢的 

慢查询的好处就是可以帮助我们定位出慢的sql语句 然后进行分析和修改调整

如何进行监控呢??
使用mysql自带的日志部分 

mysql有对应的日志参数:slow_query_log 这个开关默认是关闭状态的,打开之后就会自动的进行观察日志了

slow_query_log_file用来保存日志文件存放的位置

long_query_time 表示的是慢查询的查询时长,超过这个时间就会被记录下来

对于一些系统的变量,查询的时候都是使用的show

如何修改时间呢??

设置全局的开关 修改之后再下次会话才会生效 就是建立连接之后下次打开才会生效

设置完成,并运行脚本抓取到慢查询的日志信息为:

数据库连接池

我们知道在业务操作中会访问数据库 访问数据库的时候会执行sql语句

这个过程也是比较复杂的  先会建立三次握手的连接 三次握手建立完成之后先考虑一下安全性  再进行握手的初始化来验证数据传输时候是正常的(握手初始化-登录认证-返回认证结果) 这些准备操作都准备好之后才可以发了

最后才是执行sql语句,最后返回结果

最后还有四次挥手的关闭等等 这个效率是非常的慢的

我们可以把tcp建立连接,mysql认证以及最后的挥手过程都固化下来,让用户直接执行sql语句,这样的效率就是会大大提升

那如何固化下来呢??使用的就是数据库连接池

数据库连接池就是将这些数据库的连接事先的先建立起来,负责分配,管理和释放数据库的连接

当有程序来请求的时候,就给他分配一个连接;用完成之后就释放连接;释放是收回来,但是不是将其关闭;仅仅只是分配和回收;

这样就可以大大的提升效率,提升对数据库操作的性能;

当请求发来的时候,先看下连接池中是否是有空闲的,如果有空闲就可以分配一个来使用;

这样子就会速度非常快;

如果是没有空闲,判断是否是达到最大连接数,如果没有达到,就新建一个连接给请求的用户;(此时的效率是和之前的一样的)

如果是达到了设备的最大的连接数,就进行等待;(等释放)

如果等待的时间超过了最大的等待时间,就会抛出异常给用户

这个过程第一步的效率是有明显的提升的

第二步是和之间一样的

等待的时间远远超过处理的时间  第四步是直接的出问题了 

理想的情况下是保持在第一步的情况下的 我们要关注连接池中是否是有空闲的连接的

如果空闲的连接过大,就会造成资源的浪费,因为连接池本身也是需要消耗一定的内存的资源的,这个地方占的资源过多,那么其他的地方占的资源就会少;

所以连接池本身的占用不能太高也不能太低;

所以我们经常说资源是相互影响的

show的意思就是查看系统变量

其中 5050的意思就是同一时刻,数据库可以同时处理5050个请求

后面查看当前系统正在运行的数量 表示当前已经建立的连接数

后面的数除以前面的数,查看所占的百分比         

测试关注的就是当前使用的连接数/最大连接数 就是利用率 

过高会占满 过低说明资源存在浪费

上面的两条就是查看方法

数据库死锁

锁是什么??

日常使用的腾讯文档就是在线文档,好多人可以同时进行修改

当时有时候我们写的例如是评论但是看不到了??为什么会出现这种情况呢??
因为大家同时修改,可能就是会被删除 锁就是解决这个问题

当一个人修改的时候,别人是不能进行修改的 就是只有是改完成之后下个人才能进行修改

不会出现改乱的情况

实现方法:修改的时候对数据进行加锁,只有当第一个用户修改完成之后,其他的用户才能进行修改

锁分为两种 行锁和表锁

行是表里面的一条记录 行锁就是我操作这一行的时候其他人不能进行修改我占用的这一行

但是可以对其他行进行修改

对于效率上,行锁的效率比较高(这样不会影响其他人)

行锁会出现一个问题 这个问题就是死锁 但是表锁的效率虽然低点 但是不会产生死锁

为什么行锁会产生死锁呢??死锁就是卡死了

死锁要不就是有机制来释放,要么就是手动的干掉

如何判断是否出现了死锁 

state中locked肯定是锁了  还要看执行时间 如果是几万毫秒 也是不正常的

如果是有死锁 需要进行释放  使用命令 kill process_id

JVM内存瓶颈分析

jvm内存分为堆内存和非堆内存

非堆内存里面都是存储的静态的 静态就是申请一次之后后面不会再变化了(所有固定的东西就不会出问题)

上面的堆内存每调用一次就会申请空间,这种变化的就是会容易出现问题(如果空间申请之后没有释放,就会导致不够)

那jvm是如何管理的呢??自动回收机制

年轻代 老年代(刚申请的对象在年轻代里面)

泄漏的时长是一个长期性的过程 

泄漏完成--内存溢出

程序再来申请空间,就会空间不足  出现应用程序闪退--内存溢出(但是这个不完全是这个原因导致的)

总结

http://www.dtcms.com/a/425175.html

相关文章:

  • 购物网站建设案例delphi7网站开发
  • 做网站的前景如何福州网站建设发布
  • 中国纪检监察报官网wordpress 移动 seo
  • 乐清做网站建设商洛市住房和城乡建设局网站
  • 网站建设合同任wordpress+改邮箱
  • 做网站贴吧网站如何添加浮动窗口
  • 做转发赚钱的网站哪个网站可以做会计分录
  • 机构网站建设需要交费吗wordpress cat_name
  • 网站权重能带来什么作用网站开发的方案
  • 旅游电子商务网站建设情况网站建设技术网站建设
  • 网站制作网站推广禹顺生态建设有限公司网站
  • 东城建站推广呼伦贝尔建设网站
  • 网站英文联系我们青岛做网站哪家强
  • PCIe协议之低功耗篇之 L1状态(二)
  • 购物网站每个模块主要功能暖色网站模板
  • php网站开发职位深圳网站建设制作培训
  • 合肥论坛网站建设衡水做网站技术
  • 网站后台访问权限设置产品推广网站哪个好
  • 做斗图的网站汽车网站策划书
  • 购物网站的后台做哪些东西有源码帮忙搭建网站吗
  • 如何帮公司做网站门窗网站源码
  • 网站开发用什么字体设计电子商务网站建设方案
  • 网站建设 app 优化什么是网络营销?请举几个例子说明
  • 网站子页面如何做seophp网站底部文件
  • seo网站营销推广公司长沙seo优化价格
  • 网站建设官方网网站建设公司盈利模式
  • 个人网站如何快速通过icp备案sem广告
  • 传统企业网站建设免费建设在线商城的网站
  • 天坛网站建设建立个人网站代码
  • 网站建设的资源整合与系统设计网站建设运营方案