Nginx应用案例分享:压力测试

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在运维工作中,压力测试是一项非常重要的工作。比如在一个网站上线之前,能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验。

但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相同。面对这些问题,我们只能尽量去想方设法去模拟。所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数。

目前较为常见的网站压力测试工具有webbench、ab(apache bench)、tcpcopy、loadrunner

软件名称简介优缺点

webbench由Lionbridge公司开发,主要测试每秒钟请求数和每秒钟数据传输量,同时支持静态、动态、SSL

部署简单,静动态均可测试。适用于小型网站压力测试(单例最多可模拟3万并发)

ab(apache bench)Apache自带的压力测试工具,主要功能用于测试网站每秒钟处理请求个数

多见用于静态压力测试,功能较弱,非专业压力测试工具

tcpcopy基于底层应用请求复制,可转发各种在线请求到测试服务器,具有分布式压力测试功能,所测试数据与实际生产数据较为接近后起之秀,主要用于中大型压力测试,所有基于 tcp的packets均可测试

loadrunner压力测试界的泰斗,可以创建虚拟用户,可以模拟用户真实访问流程从而录制成脚本,其测试结果也最为逼真模拟最为逼真,并可进行独立的单元测试,但是部署配置较为复杂,需要专业人员才可以。

下面,笔者就以webbench为例,来讲解一下网站在上线之前压力测试是如何做的。

安装webbench

#wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz

#tar zxvf webbench-1.5.tar.gz

#cd webbench-1.5

#make && make install

进行压力测试

并发200时

# webbench -c 200 -t 60 http://blog.luwenju.com/index.php

参数解释:-c为并发数,-t为时间(秒)

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://blog.luwenju.com/index.php

200 clients, running 60 sec.

Speed=1454 pages/min, 2153340 bytes/sec.

Requests: 1454 susceed, 0 failed.

当并发200时,网站访问速度正常

并发800时

#webbench -c 800 -t 60 http://blog.luwenju.com/index.php

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://blog.luwenju.com/index.php

800 clients, running 60 sec.

Speed=1194 pages/min, 2057881 bytes/sec.

Requests: 1185 susceed, 9 failed.

当并发连接为800时,网站访问速度稍慢

并发1600时

#webbench -c 1600 -t 60 http://blog.luwenju.com/index.php

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://blog.luwenju.com/index.php

1600 clients, running 60 sec.

Speed=1256 pages/min, 1983506 bytes/sec.

Requests: 1183 susceed, 73 failed.

当并发连接为1600时,网站访问速度便非常慢了

并发2000时

#webbench -c 2000 -t 60 http://blog.luwenju.com/index.php

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://blog.luwenju.com/index.php

2000 clients, running 60 sec.

Speed=2154 pages/min, 1968292 bytes/sec.

Requests: 2076 susceed, 78 failed.

当并发2000时,网站便出现“502 Bad Gateway”,由此可见web服务器已无法再处理用户访问请求

总结:

1、压力测试工作应该放到产品上线之前,而不是上线以后

2、测试时尽量跨公网进行,而不是内网

3、测试时并发应当由小逐渐加大,比如并发100时观察一下网站负载是多少、打开是否流程,并发200时又是多少、网站打开缓慢时并发是多少、网站打不开时并发又是多少

4、 应尽量进行单元测试,如B2C网站可以着重测试购物车、推广页面等,因为这些页面占整个网站访问量比重较大

转载于:https://my.oschina.net/kisshua/blog/41309

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

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

相关文章

shell 判断文件是否存在,没有则创建

没有该文件则创建,有则 ls -l 输出文件信息。 #!/bin/bash echo "enter the name:" read filename if test -e $filename ; then ls -l $filename else touch $filename fi 输出 enter the name: sss.sh -rwxr-xr-x 1 root root 147 Dec 3 09:02 sss.sh …

声音是什么?

转自博客园《【秒懂音视频开发】02_重识声音》,https://www.cnblogs.com/mjios/p/14466418.html#5035688#!comments声音的产生声音(Sound),是由物体的振动产生的。一切正在发声的物体都在振动。我们说话的时候,是声带在…

c#中的常用ToString()方法总结。

很多类都重写了ToString方法, 导致很多类的tostring到底执行了什么,有哪些参数,都不清楚。。。。很郁闷!对于int,double等的tostring:C 货币 2.5.ToString("C") ¥2.50…

UDT源码剖析(五):UDT::cleanup()过程代码注释

调用路线 UDT::cleanup()->CUDT::cleanup()->CUDTUnited::cleanup() 1 int CUDTUnited::cleanup() 2 { 3 // 锁保护 4 CGuard gcinit(m_InitLock); 5 6 // 如果还有实例运行,则到此为止了 7 if (--m_iInstanceCount > 0) 8 return 0; …

《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹

“灭世者”、“疯狂者”、“叛逆者”三兄妹:“灭世者”黑卡蒂:卡西欧家族的科技天才,沉默,不爱说话,一对亮闪闪的氪金眼,黑暗军团一战后,以“天空之镜”的设计者而闻名。柏拉图“理想国”的拥有…

[源码和文档分享]基于C语言的语法高亮设计与实现

一 需求分析 在所需高亮的关键字或字符串前后加上class标签,在css定义颜色。 二 程序设计 2.1 设计思路 把.html文件和.css文件中的内容存在两个字符数组中,在.cpp用文件操作写入。 2.2 文件组织架构 Syntax highlighting.exe所在目录为根目录 源代码命…

在.NET中用excel导出(概要)

首先要在项目->添加引用->COM中添加Microsoft Office Web Components ,然后定义一个OWC.SpreadsheetClass 如:Dim xlsheet As New OWC.SpreadsheetClass 然后就可以向sheet中添加数据了,使用xlsheet.Cells(2, 2) "表格填充内容&q…

我愿为这二极管奉献我的一生

简 介: 利用二极管完成对信号的整流,求取绝对值等具有很多的应用。然而在小信号下,二极管的前向导通电压以及相应的杂散电容会对信号整流带来严重的影响。本文从“马场清太郎”所著的“运算放大器应用电路设计”中摘取了一些典型应用电路&…

61条Java面向对象设计的经验原则

1)所有数据都应该隐藏在所在的类的内部。 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。 (3)尽量减少类的协议中的消息。 (4)实现所有类都理解的最基本公…

问题?

1、java类空参构造器的作用? 构建对象时候所用的空参构造函数 2、static代码块与非static代码块的区别: 静态代码块,在虚拟机加载类的时候就会加载执行,而且只执行一次;非静态代码块,在创建对象的时候&…

【毕业设计】履带四足复合机器人

1.项目简介本项目中,履足式复合机器人拥有两种行进模式:四足行进模式、履带行进模式,应对不同场景及地形时能够切换形态。四足形态下整体总共拥有8个自由度DOF,单腿各具备2个自由度DOF,足端结构融入了履带机构&#xf…

UDT源码剖析(六):UDT::socket()过程代码注释

调用路线 UDT::socket()->CUDT::socket()->CUDTUnited::newSocket() 1 UDTSOCKET CUDT::socket(int af, int type, int) 2 { 3 // 如果垃圾收集没启动,那么这里自动调用startup 4 // 所以手动调用startup其实不是必须的,但是为了接受作者的风…

Exam化的软件项目管理

最近所做的工作是做一个公司产品的前期原型设计,这期间主要采用的是敏捷的Scrum开发方式,在一般的解释中认为每一个“疾跑”过程中,最主要的是交付一个可用的产品,Scrum在处理时间、资源和功能3点的平衡中,唯一可以牺牲…

Java程序员从笨鸟到菜鸟之(五)java开发常用类(包装,数字处理集合等)(下)...

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 写在前面:由于前天项目老师建设局的项目快到验收阶段,所以,前天晚上通宵,昨天睡了大半天,下午我们宿舍聚会&#…

c#: 任务栏进度显示(TaskbarManager)

Win7及以上系统支持任务栏进度条,为有进度类应用显示进度于任务栏,甚为方便。 以c#之WinForm实现其,大多采用Windows API Code Pack这个方案,加多引用,比较繁琐,而我总也打不开了其页面。 鄙人不喜欢多引用…

今天,过了27年后,IE浏览器停用了

前言随着Windows的官宣,ie浏览器将于6月16日正式退役。https://www.microsoft.com/zh-cn/download/internet-explorer.aspx那个曾几何时的浏览器之王,经历一次又一次操作系统的迭代,直至新兴浏览器的出现后沦为浏览器鄙视链的最后一层&#x…

设计模式 之 创建者

很久没写设计模式学习笔记了,今天无聊,随便把以前看的模式的都写下.先把代码帖上来吧.这个模式,是模拟 西山居的一款游戏,剑侠情缘 来写的,呵呵,当然,该游戏到底是怎么设计的,我是不知道,只是作为一个例子放到这个地方.using System; using System.Colle…

svn添加用户.sh

#!/bin/bash FLASH_SVNPATH/xx_new_flash/conf DESIGN_SVNPATH/xx_new_design/conf JAVA_SVNPATH/xx_new_java/conf echo "请选择 java flash meishucehua " read -p "请选择部门员工 java,flash,meishucehua " bumen case $bumen in flash) …

spring boot+mybatis+generator生成domain大小写问题

之前遇到一个问题&#xff0c;用generator生成数据库对应的domain&#xff0c;以前都是好好的&#xff0c;那天突然生成的domain都是小写的&#xff0c;因为我数据库里是大写的&#xff0c;后来找到解决办法&#xff0c; <table tableName"material_pile" domainO…

boost库学习入门篇

学习及使用Boost库已经有一段时间了&#xff0c;Boost为我的日常开发中带来了极大的方便&#xff0c;也使得我越来越依赖于boost库了。但boost功能太多&#xff0c;每次使用还是得翻看以前的 资料&#xff0c;所以为了以后可以更方便的使用&#xff0c;在此对常用的功能作一个…