热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AB(Apachebenchmark)并发测试工具-PHP源码

AB(Apachebenchmark)并发测试工具
跳至 [1] [2] [3] [全屏预览]
Concurrency Level: 1000
Time taken for tests: 1.190 seconds #处理1000个并发请求总共花了1.19秒
Complete requests: 1000 #完成处理的请求量
Failed requests: 0 #请求失败数
Write errors: 0
Non-2xx responses: 1000
Total transferred: 164000 bytes #总共传输了多少流量
HTML transferred: 0 bytes
Requests per second: 840.58 [#/sec] (mean) 
#平均一个请求花840.58毫秒,相当于LR中的每秒事务数,后面括号中的mean 表示这是一个平均值
Time per request: 1189.651 [ms] (mean) 
#相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值
Time per request: 1.190 [ms] (mean, across all concurrent requests)
#每个请求实际运行时间的平均值ms是毫秒
Transfer rate: 134.62 [Kbytes/sec] received 
#传输速率,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

2. [代码]ab详细参数说明 跳至 [1] [2] [3] [全屏预览]

ab [options] [http[s]://]hostname[:port]/path
Options are:
    #测试会话中所执行的请求个数,默认仅执行一个请求
    -n requests     Number of requests to perform
    #一次产生的请求个数,即同一时间发出多少个请求,默认为一次一个
    -c concurrency  Number of multiple requests to make
    #测试所进行的最大秒数,默认为无时间限制....其内部隐含值是[-n 50000],它可以使对服务器的测试限制在一个固定的总时间以内
    -t timelimit    Seconds to max. wait for responses
    -b windowsize   Size of TCP send/receive buffer, in bytes
    #包含了需要POST的数据的文件
    -p postfile     File containing data to POST. Remember also to set -T
    -u putfile      File containing data to PUT. Remember also to set -T
    #POST数据所使用的Content-type头信息
    -T content-type Content-type header for POSTing, eg.
                    'application/x-www-form-urlencoded'
                    Default is 'text/plain'
    #设置显示信息的详细程度,4或更大值会显示头信息,3或更大值可以显示响应码(404,200等),2或更大值可以显示警告和其他信息
    -v verbosity    How much troubleshooting info to print
    #以HTML表格的形式输出结果,默认是白色背景的两列宽度的一张表
    -w              Print out results in HTML tables
    #执行HEAD请求,而不是GET
    -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 #对请求附加一个COOKIE行,其典型形式是name=value的参数对,此参数可以重复 -C attribute Add COOKIE, eg. 'Apache=1234'. (repeatable) #对请求附加额外的头信息,此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如"Accept-Encoding: zip/zop;8bit") -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' Inserted after all normal header lines. (repeatable) #HTTP验证,用冒号:分隔传递用户名及密码 -A attribute Add Basic WWW Authentication, the attributes are a colon separated username and password. #对一个中转代理提供BASIC认证信任,用户名和密码由一个冒号:隔开,并以base64编码形式发送 #无论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送 -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 #启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求,默认为不启用KeepAlive功能 -k Use HTTP KeepAlive feature #不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持) -d Do not show percentiles served table. #不显示中值和标准背离值,且均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息,默认会显示最小值/均值/最大值等(为以前的版本提供支持) -S Do not show confidence estimators and warnings. #把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件 #此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中,其中的第一行为标题 -g filename Output collected data to gnuplot format file. #产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间 #由于这种格式已经"二进制化",所以比'gnuplot'格式更有用 -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. [代码]ab详细结果说明 跳至 [1] [2] [3] [全屏预览]

ab -n 1000 -c 10 http://www.libs.org.cn/
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.libs.org.cn (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服务软件名称,它来自于HTTP响应数据的头信息(Apache-Coyote/1.1也就是Tomcat)
Server Software:        Apache-Coyote/1.1
#服务器主机名,即请求的URL中的主机部分名称
Server Hostname:        epay.10010.com
#被测试Web服务器软件的监听端口
Server Port:            443
SSL/TLS Protocol:       TLSv1/SSLv3,DHE-RSA-AES256-SHA,2048,256
 
#请求URL的绝问文件路径,即请求的资源
Document Path:          /
#HTTP响应正文的长度,不包括响应头,即减去了Total transferred中的HTML响应数据中头信息的长度
Document Length:        0 bytes
 
#并发数(-c属性来设置)
Concurrency Level:      10
#执行完所有的请求所花费的时间,即整个测试持续的时间
Time taken for tests:   26.121 seconds
#完成的请求数量
Complete requests:      1000
#失败的请求数量
Failed requests:        0
Write errors:           0
Non-2xx responses:      1001
#整个场景中的网络传输量,即所有请求的响应数据的总和,包含头信息和正文长度
Total transferred:      299299 bytes
#整个场景中的HTML内容传输量,即所有请求中响应数据的正文长度,不包含头信息的长度
HTML transferred:       0 bytes
#吞吐率:即每秒处理的请求数,相当于LR中的每秒事务数,括号中的mean表示这是一个平均值,其值为Complete requests/Time taken for tests
Requests per second:    38.28 [#/sec] (mean)
#平均请求等待的时间:相当于LR中的平均事务响应时间,其值为Time taken for tests/(Complete requests/Concurrency Level)
Time per request:       261.206 [ms] (mean)
#服务器平均请求处理的时间,即每个请求实际运行时间的平均值,其值为Time per request/Concurrency Level
Time per request:       26.121 [ms] (mean, across all concurrent requests)
#平均每秒网络上的流量,即这些请求在单位内从服务器获取的数据长度,其值为(Total transferred/Time taken for tests/)1024
#这个统计选项可以很好的说明服务器在处理能力达到极限时其出口带宽的需求量
#可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Transfer rate:          11.19 [Kbytes/sec] received
 
#网络上消耗的时间的分解,各项数据的具体算法还不是很清楚
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       85  222 101.0    205    1224
Processing:    12   38  23.4     34     151
Waiting:       12   37  23.5     33     151
Total:        144  259 100.9    244    1268
 
#整个场景中所有请求的响应情况,在场景中每个请求都有一个响应时间
#下面结果表明,50%的用户响应时间(即请求处理时间,这里处理时间是指Time per request)小于244毫秒
#66%的用户响应时间小于252毫秒,而最大的响应时间小于1268毫秒
#对于并发请求,实际上CPU并不是同时处理的,而是按照每个请求获得的时间片而逐个轮转处理的
#所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数
Percentage of the requests served within a certain time (ms)
  50%    244
  66%    252
  75%    254
  80%    255
  90%    260
  95%    481
  98%    665
  99%    686
 100%   1268 (longest request)


推荐阅读
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
author-avatar
dmcm0005
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有