已有 21 次阅读 2016-04-13 12:43 | 系统分类:性能优化 |
测试环境概要
本次测试基于以下环境:
-
ApacheBench(v2.3)
-
Mac OS X 10.10.5
-
2.7 GHz Intel Core i5
-
Memory 8GB
内容概要
该文主要收集ab test的各项参数的具体含义并举例介绍ab test的基本使用方法.
关于ApacheBench(以下简称ab)
官方释义如下: ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server 简单来说就是一款压力测试工具, 可以通过创建多线程模拟多用户同时请求服务器行为, 从而实现对目标服务器进行压力测试的目标.对 https://github.com 网站模拟压力测试的效果图如下:
ab参数详解
联系上图对ab测试的各项参数进行阐述:
Server Software
被测Web服务器软件名称, 它来自http响应数据的头信息.
Server Hostname
请求的URL中的主机部分名称,它来自http请求数据的头信息.
Server port
被测Web服务器软件的监听端口.
SSL/TLS Protocol
客户端与服务器端的协商头信息, 仅当使用了SSL协议时才会打印此信息, 例如此处测试的Github网站采用的是 https 协议, 使用了SSL协议, 因此ab打印出了此信息.
Document Path
请求URL中的根绝对路径, 此处为 / .
Document Length
首次响应数据的正文长度, 单位为字节.
Concurrency Level
并发用户数, 命令中表现为 -c 后面跟着的参数.
Time taken for tests
所有请求的总耗时, 总请求表现为 -n 后面的参数, 从首个socket被创建至接受到最后一个响应的耗时.
Complete requests
总请求数, 与命令中 -n 后面的参数一致.
Failed requests
失败的请求数,失败指的是连接服务器、发送数据、接收数据等环节发生异常, 以及无响应后超时的情况.如果接受到的http响应数据的头信息中含有 2xx 以外的状态码,则会在测试结果显示另一个名为 Non-2xx responses 的统计项,用于统计这部分请求数, 这些请求并不算是失败的请求.
Total body sent
如果请求为 POST 类型带有请求体此处才会打印出来, 表示带数据发送请求.
HTML transferred
所有请求的响应数据长度总和, 包括每个http响应数据的头信息和正文数据的长度(不包括http请求数据的长度).
HTML transferred
所有请求的响应数据中正文数据的总和, 即不包括响应数据中头信息的长度.
Request per second
这里相当于服务器每秒所能接受的请求数即吞吐率, 可通过公式计算 Complete requests / Time taken for tests , 如对上图中的结果计算 10 / 10.497 ≈ 0.95 , 后面的计算结果都是四舍五入近似值, (mean) 表示这是一个平均值. 为了测试随着请求数的增加该值会出现怎样的变化, 特地写了段程序分析 点击看代码 查看疑问 .
Time per request
第一个TPR表示用户平均请求等待时间, 可通过公式计算 Time taken for tests / (Complete requests /Concurrency Level) , 如对上图中的结果计算 10.497 / 10 / 2 ≈ 2099.4 (这里是近似值).
Time per request
第二个TPR表示服务器平均处理每一个并发请求的时间, 可通过公式计算 Time per request / Concurrency Level , 如果对上图中的结果计算 2099.4 / 2 ≈ 1049.7 (这里是近似值).
Transfer rate
请求在单位时间内从服务器获取的数据长度, 可通过公式计算 Total transferred / Time taken for tests , 如对上图对结果计算计算 273337(byte) / 10.497 ≈ 26039.5351 / 1024(kb) ≈ 25.43kb/s , 从这里也可以看出大致的带宽需求.
Connection Times(ms)
此处对 Connect 、 Processing 、 Waiting 、 Total 进行解释. Connect 表示网络延时加上与远程服务器建立连接所耗费的时间, Processing 表示第一个字节发出去至接受到第一个响应字节之间所耗费的时间, 这里大致可以推断出服务器的处理能力、 Waiting 表示最后一个字节发送完至接受到第一个字节到响应时间间隔、 Total 表示从建立连接开始至接受到第一个字节响应的总时间, 是 Connect 与 Processing 的时间总和, 当然此处不能单纯根据上图的结果去加, 因为图中表示的是均值.
Percentage of the requests served within a certain time (ms)
这里表示请求处理时间的分布与上面 Time per request 对应, 从图中可以看到50%的处理时间小于1535ms, 根据 Connection Times 可以看到最长的处理时间为6394ms, 最短处理时间为1306ms.
使用 gnuplot 工具可以直观的根据图标分析
使用 -g 参数结合 gnuplot 可以从图标中更加直观的看到分析结果, 如下图为一个简单的ab测试后使用 gnuplot 生成的图:
基本的使用示例
以下介绍几个基本的使用场景, 更多ab参数请点击参考链接查看官网介绍.
模拟GET请求 -n1000
ab -n1000 http://www.example.com/
模拟POST请求 -n1000
此处在当前文件夹下面需要准备 p.json 文件, 文件内容为json格式的key/value对: ab -n1000 -p p.json -T application/json http://www.example.com/
模拟并发 -n1000 -c20 (c
并发数不能大于总请求数: ab -n1000 -c20 http://www.example.com/
查看返回头信息 -n1000 -v 3 (-v 可选2、3、4)
ab -n1000 -v 2 http://www.example.com/
图标展示结果 -n1000 -g g.tsv
生成 gnuplot 生成分析图所需要的数据文件: ab -n1000 -g g.tsv http://www.example.com/
参考链接
主要参考链接如下: Apache httpd(v2.4) 各项参数含义 Connection Times 关于gnuplot

本文討論了HTML< Progress>元素,其目的,樣式和與< meter>元素。主要重點是使用< progress>為了完成任務和LT;儀表>對於stati

本文討論了html< datalist>元素,通過提供自動完整建議,改善用戶體驗並減少錯誤來增強表格。Character計數:159

本文討論了HTML< meter>元素,用於在一個範圍內顯示標量或分數值及其在Web開發中的常見應用。它區分了< meter>從< progress>和前

本文討論了視口元標籤,這對於移動設備上的響應式Web設計至關重要。它解釋瞭如何正確使用確保最佳的內容縮放和用戶交互,而濫用可能會導致設計和可訪問性問題。

本文解釋了HTML5< time>語義日期/時間表示的元素。 它強調了DateTime屬性對機器可讀性(ISO 8601格式)的重要性,並在人類可讀文本旁邊,增強Accessibilit

本文討論了使用HTML5表單驗證屬性,例如必需的,圖案,最小,最大和長度限制,以直接在瀏覽器中驗證用戶輸入。

本文討論了< iframe>將外部內容嵌入網頁,其常見用途,安全風險以及諸如對象標籤和API等替代方案的目的。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境