热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

ab网站压力测试命令

这篇文章主要介绍了ab网站压力测试命令,需要的朋友可以参考下

我们知道压力测试的软件确实很多,诸如微软的WAST,惠普的LoadRunner以及等等其他的,但这些软件学习起来还是需要花费些时间,在选择上实在头痛,后来在郭欣的那本《构建高性能WEB站点》上看到了他介绍的这款Apache自带的压力测试工具ab,十分喜爱,于是今天终于有机会体验下ab对网站的压力测试。 实验之前我的apache已经安装了,操作系统:Ubuntu 10.04 VMware 7.0

1、先查看一下版本信息 ab -V(注意是大写的V)

studiogang@studiogang:~$ ab -V 
This is ApacheBench, Version 2.3 <$Revision: 655654 $> 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
Licensed to The Apache Software Foundation, http://www.apache.org/ 

 2、我们也可以使用小写的v查看下ab命令的一些属性 ab -v

studiogang@studiogang:~$ ab -v 
ab: option requires an argument -- v 
ab: wrong number of arguments 
Usage: ab [options] [http[s]://]hostname[:port]/path 
Options are: 
 -n requests  Number of requests to perform 
 -c concurrency Number of multiple requests to make 
 -t timelimit Seconds to max. wait for responses 
 -b windowsize Size of TCP send/receive buffer, in bytes 
 -p postfile  File containing data to POST. Remember also to set -T 
 -u putfile  File containing data to PUT. Remember also to set -T 
 -T content-type Content-type header for POSTing, eg. 
     'application/x-www-form-urlencoded' 
     Default is 'text/plain' 
 -v verbosity How much troubleshooting info to print 
 -w    Print out results in HTML tables 
 -i    Use HEAD instead of GET 
 -x attributes String to insert as table attributes 
 -y attributes String to insert as tr attributes 
 -z attributes String to insert as td or th attributes 
 -C attribute Add COOKIE, eg. 'Apache=1234. (repeatable) 
 -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' 
     Inserted after all normal header lines. (repeatable) 
 -A attribute Add Basic WWW Authentication, the attributes 
     are a colon separated username and password. 
 -P attribute Add Basic Proxy Authentication, the attributes 
     are a colon separated username and password. 
 -X proxy:port Proxyserver and port number to use 
 -V    Print version number and exit 
 -k    Use HTTP KeepAlive feature 
 -d    Do not show percentiles served table. 
 -S    Do not show confidence estimators and warnings. 
 -g filename  Output collected data to gnuplot format file. 
 -e filename  Output CSV file with percentages served 
 -r    Don't exit on socket receive errors. 
 -h    Display usage information (this message) 
 -Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers) 
 -f protocol  Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL) 

3、现在我们就对51CTO的网站进行一次压力测试吧,使用命令ab -n1000 -c10 http://www.jb51.net/index.php,其中 -n1000 表示总请求数 -c10表示并发用户数为10 http://www.jb51.net/index.php 表示请求的URL,下面是测试的结果,其中我们最关心的三个指标,我已经注释出来了。

studiogang@studiogang:~$ ab -n1000 -c10 http://www.51cto.com/index.php 
This is ApacheBench, Version 2.3 <$Revision: 655654 $> 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
Licensed to The Apache Software Foundation, http://www.apache.org/ 
 
 
Benchmarking www.51cto.com (be patient) 
Completed 100 requests 
Completed 200 requests 
Completed 300 requests 
Completed 400 requests 
Completed 500 requests 
Completed 600 requests 
Completed 700 requests 
Completed 800 requests 
Completed 900 requests 
Completed 1000 requests 
Finished 1000 requests 
 
 /*WEB服务器用的是nginx*/
Server Software:  nginx 
Server Hostname:  www.51cto.com 
Server Port:   80 
 
Document Path:   /index.php 
Document Length:  154 bytes 
 
Concurrency Level:  10 
Time taken for tests: 74.373 seconds 
Complete requests:  1000 
Failed requests:  0 
Write errors:   0 
Non-2xx responses:  1000 
Total transferred:  330000 bytes 
HTML transferred:  154000 bytes
/*大家最关心的指标之一,指的是吞吐率
相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值*/ 
Requests per second: 13.45 [#/sec] (mean)
/*大家最关心的指标之二,指的是用户平均请求等待时间
相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值*/ 
Time per request:  743.726 [ms] (mean) 
/*大家最关心的指标之三,指的是服务器平均请求处理时间
Time per request:  74.373 [ms] (mean, across all concurrent requests) 
Transfer rate:   4.33 [Kbytes/sec] received 
 
Connection Times (ms) 
    min mean[+/-sd] median max 
Connect:  129 163 245.3 145 3154 
Processing: 129 576 1510.8 147 11756 
Waiting:  129 567 1502.0 147 11756 
Total:  261 739 1543.7 294 11888 
 
Percentage of the requests served within a certain time (ms) 
 50% 294 
 66% 297 
 75% 304 
 80% 308 
 90% 1290 
 95% 3452 
 98% 7582 
 99% 7962 
 100% 11888 (longest request) 

4、为了使结果更有对比性,我们将并发用户更改为100个进行压力测试,我这里只将三个指标贴出来

Requests per second: 190.95 [#/sec] (mean) 
Time per request:  523.694 [ms] (mean) 
Time per request:  5.237 [ms] (mean, across all concurrent requests) 

5、将并发用户改为200个进行测试

    Requests per second: 186.00 [#/sec] (mean) 
    Time per request:  1149.433 [ms] (mean) 
    Time per request:  5.747 [ms] (mean, across all concurrent requests) 

6、500个并发用户时的情况

Requests per second: 180.99 [#/sec] (mean) 
Time per request:  2631.662 [ms] (mean) 
Time per request:  5.263 [ms] (mean, across all concurrent requests) 

     我们来分析下测试的结果,先对比下吞吐率,当并发用户的时候吞吐率最高为190 reqs/s,当并发用户数为200,500 吞吐率下降了,随之用户的等待时间更是明显增加了,已经有2s的等待时间了。这说明性能明显下降了。当然分析这个测试结果并不是说明51CTO的网站的并发用户只能在500左右,因为我是在服务器负荷的情况下就行测试的,这显然不能说明问题。另外我们在生产环境下测试的时候,最好能将测试结果做成报表,这样可以非常清晰地对比出问题来,好了,我该准备下,给上面提交一份我们公司网站的测试报告了。


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 在ubuntu服务器上安装vscode,但是目前使用的方法都无法成功。第一次安装经历:安装完anaconda后有自动安装vscode的选项,输入yes后,没有出现错误,但是在终端输 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
author-avatar
手机用户2502875747
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有