性能测试分析之带宽瓶颈的疑惑

第一部分, 测试执行

先看一图,再看下文

2011040216261387.png

这个当然就是压力过程中带宽的使用率了,我们的带宽是1Gbps的,合计传输速率为128MB/s,也正因为这个就让我越来越疑惑了,不过通过压力过程中的各项数据我又不得不相信。

在看看测试页面的大小和请求,如下图所示:

2011040216305553.jpg

这是通过httpwatch检测得出来的,页面传输内容的大小为652154Byte,请求数为149次,也就是说加载一次页面就大概需要请求这么多次请求,传输这么大的内容,当然这里剔除缓存机制来分析的。

场景设计:

  1、并发用户200

  2、每20秒加载10个用户

  3、全部用户加载完成之后,持续运行10分钟

监控目标:TPS、响应时间、点击率、吞吐率、内存、CPU和网络带宽

测试分析结果如下图:

2011040216503284.jpg

这里的可以得出平均点击率为11952.139次/s,而吞吐率为73178737byte,大约为73MB/s,TPS:720/s,这里的错误后面再说。

2011040216590561.jpg

这里的响应时间很显然没有上去,说明压力没有传到页面上,而上面的错误也同时可以证实,报错基本都是请求被拒绝,也就说后面没有请求导致页面没有压力,响应时间就无效了。  

通过监控得到系统资源占用率数据有:

  CPU:25~30%

  内存:20%

  网络带宽:70~95%  

通过Httpwatch在压力过程监控的页面响应时间为:6.454s

通过结合虚拟用户、点击率、吞吐率和响应时间的曲线图分析得出如下总结:

  当虚拟用户加载到150的时候,点击率和吞吐率此时处于峰值,且网络带宽达到90%以上,当虚拟用户继续加载的时候,点击率和吞吐率均都开始下降,此时场景运行开始报错,提示信息为服务器连接被拒绝。通过分析,处于峰值只有网络带宽,为90%以上,而对比此处的吞吐率值恰为95MB/s左右,1Gbps的网络带宽传输速率为128MB/s,从而表明由于吞吐量过大,占用了大量的带宽资源,导致后续的虚拟用户无法得到服务器的资源,而致使请求被拒绝。从最后的页面响应时间来看,系统的压力并没有被承接到页面上,而是由于过大的吞吐量吞噬了网络带宽,导致最终无法有效地完成测试任务。

第二部分,测试分析

  如上的结果确实是证实了网络带宽不够用,抱着这个不大相信的疑问,我在群里跟大家讨论了一番,当然大家的给出结论也都是一致,也有建议修改系统的参数,释放所有的带宽等;还有就是分析页面,当然这个我个人认为是比较切实的路径,毕竟1Gbps的带宽,如果再扩从的话也不大现实,所以还是要靠优化程序着手。

  我又继续通过httpwatch工具对其他门户网站首页进行检测,发现页面容量差不多,但是从请求上来讲,腾讯和同花顺的首页请求都只有80左右,而我们的却有149个请求,这里的请求数就直接决定于点击率的多少,从这里我们就可以发觉,并不是对所有的压力测试来说,每秒钟的点击率越高,对应的吞吐率越大就说明系统的性能越好,必须相对请求数而言来进行分析。从另一个层面上来说点击率越高是说明程序效率好,但是从本身来讲,如果一个页面本身的请求就很多,那最后的点击率必然会大,大到最后的结果就是页面内容累计容量就越大,导致传输带宽的不断放大,当然就带宽不够用了。如果一定程序上降低了单个页面的请求数量,那页面的执行效率必然会越高,而需要结合整体页面的容量大小来衡量。

最后,我给开发提出的建议,还是需要对程序、页面等进行优化,优化硬件还有待考量,优化建议如下:

  1、降低页面的请求次数

  2、优化页面中各个元素的容量大小,结合Page Speed和YSlow工具进行优化测试

  3、多方面结合缓存机制

不知道以上的分析结果是否准确,但让我从性能分析的思路上又走出了一个绝地,不要放过每一个细节,也许那就是拐点。

转载于:https://www.cnblogs.com/candle806/archive/2011/04/02/2003828.html

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

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

相关文章

Android 中的LayoutInflater的理解

LayoutInflater与findViewById的区别? 对于一个已经载入的界面,就可以使用findViewById()方法来获得其中的界面元素。对于一个没有被载入或者想要动态载入的界面,就需要使用LayoutInflater对象的inflate()方法来载入。findViewById()是查找已…

linux rootfs编译进内核,九鼎x6818开发板笔记:uboot、kernel、rootfs编译和烧写

下面记录了如何搭建嵌入开发环境,如何编译uboot、kernel、和文件系统,如何烧写镜像以及如何配置uboot环境变量。阅读注意:记录中(Base框中的内容)一些操作故意被添加,为了展示文件内容,故意调用cat(Ubuntu)或者type(wi…

figma下载_素描vs Figma困境

figma下载I distinctly remember how much hatred I had in my heart when I lived through my first UI update. The year was 2009; I had just gotten my braces off and I was ready to smash that ‘Like’ button on my high school crush’s status when I logged into …

祝大家七夕快乐,邀你源码共读,顺带发点红包

大家好,我是若川。这是一个普通的周六。只不过又叫七夕节,祝大家七夕节快乐~所以就不更新技术文了。估计还是有很多读者不知道我。若川名字由来是取自:上善若水,海纳百川。顺便放两篇文章。我读源码的经历,跟各位读者朋…

windows 系统监视器 以及建议阀值

windows 系统监视器 以及建议阀值 计数器的说明可以在添加计数器那边 资源 对象\计数器建议的阈值注释磁盘Physical Disk\% Free SpaceLogical Disk\% Free Space15%磁盘Physical Disk\% Disk Time Logical Disk\% Disk Time90%磁盘Physical Disk\Disk Reads/sec、Physical Dis…

前端人员如何在linux服务器上搭建npm私有库

为什么要搭建npm私有库? 为了方便下载时,公共包走npmjs,私有包走内部服务器。npm包下载的速度较慢,搭建npm私有库之后,会先操作私有库中是否有缓存,有缓存直接走缓存,而不用重新再去请求一遍网络。哪种方式…

硬币 假硬币 天平_小东西叫硬币

硬币 假硬币 天平During the last 1,5 years, I’ve been traveling a lot. Apart from my must-have things like laptop, sketchbook, and power bank, there constantly appears a new one, in a familiar shape but a new look. That’s 在过去的1.5年中,我经常…

Linux创建一个用户时分配组,useradd和groupadd(Linux创建用户\用户组\设置\分配用户权限)的使用...

前言:man useradd    man groupadd    info useradd    info groupadd 都可以获取相关命令的用法信息。个人比较喜欢读英文解释文档,没有你想象的那么complicated!😜USERADD(8) System Management Commands USERADD…

尤雨溪发布的Vue 3.2 有哪些新变化?

大家好,我是若川。今天分享一篇 Vue 3.2 版本的文章。查看源码等系列文章。学习源码整体架构系列、年度总结、JS基础系列1前言8.10号凌晨,尤雨溪在微博平台官宣 Vue 3.2 版本正式发布:此版本包含一系列重要的新功能与性能改进,但并…

对象的清除

调用System.gc() 请求垃圾回收的最简单的方法,但是注意——只是请求,在调用System.gc()之后,有可能会释放出更多的内存空间。转载于:https://www.cnblogs.com/happykakeru/archive/2011/04/09/2010030.html

https://zeplin.io/ 设计图标注及切图

2019独角兽企业重金招聘Python工程师标准>>> https://zeplin.io/ 转载于:https://my.oschina.net/soho00147/blog/3025646

更好的设计接口_设计可以而且必须做得更好

更好的设计接口We live in a world that becomes more dependent on technology every day. Tech gives us new ways to communicate, learn, work, and play, and recently it enabled us to reveal the appalling police brutality towards black people in the US by sharin…

linux隐写文件剥离,杂项的基本解题思路(1)——文件操作隐写、图片隐写

文件操作隐写图片隐写压缩文件处理流量取证技术文章本来是分成4部分的,但是前两部分何在一起写了也就没有分开,所以干脆就只分了两部分文件基本类型的识别一、kail 下file 文件名原理就是识别文件文件头比如这个软件:二、WinHex通过winhex分析…

账务管理系统

2011-04-11 21:55最近写了一个账务管理系统(个人版)使用C#语言编写,编译器VS2010,数据库Access2010,系统采用三层架构,界面可以换肤, 窗体按钮可以移动,可以自定义皮肤,保…

初学者也能看懂的 Vue3 源码中那些实用的基础工具函数

1. 前言大家好,我是若川。最近组织了源码共读活动。每周读 200 行左右的源码。很多第一次读源码的小伙伴都感觉很有收获,感兴趣可以加我微信ruochuan12,拉你进群学习。写相对很难的源码,耗费了自己的时间和精力,也没收…

Flutter RichText支持自定义文字背景

extended text 相关文章 Flutter RichText支持图片显示和自定义图片效果Flutter RichText支持自定义文本溢出效果Flutter RichText支持自定义文字背景Flutter RichText支持特殊文字效果之前介绍过了Extended text,老规矩上图 UI设计说,那个字可以加个卟呤…

细说 Vue.js 3.2 关于响应式部分的优化

大家好,我是若川。上一篇写的是:初学者也能看懂的 Vue3 源码中那些实用的基础工具函数。今天再分享一篇 Vue 3.2 的文章。学习源码整体架构系列、年度总结、JS基础系列背景Vue 3 正式发布距今已经快一年了,相信很多小伙伴已经在生产环境用上了…

linux 运行apj,pxe+ris-linux实现在DELL R710上网络安装windows2003

一、前言网络远程安装windows2003,目前有两种方法:一就是通过windows自带的远程安装服务(RIS,Remote Installation Service),但这种方法需要用windows做为源服务器,需要安装域控制器,dhcp,tftp等…

Debian Security Advisory(Debian安全报告) DSA-4411-1 firefox-esr security update

Debian Security Advisory(Debian安全报告) DSA-4411-1 firefox-esr security update Package :firefox-esr CVE ID: CVE-2018-18506 CVE-2019-9788 CVE-2019-9790 CVE-2019-9791 CVE-2019-9792 CVE-2019-9793 CVE-2019-9795 CVE-2019-9796 CVE…

Entity framework WhereInExtension

摘自 http://www.cnblogs.com/ejiyuan/archive/2009/07/20/1527224.html publicstaticclassWhereInExtension {privatestaticExpression<Func<TElement, bool>>BuildWhereInExpression<TElement, TValue>(Expression<Func<TElement, TValue>>pro…