目錄
测试环境概要
内容概要
关于ApacheBench(以下简称ab)
ab参数详解
Server Software
Server Hostname
Server port
SSL/TLS Protocol
Document Path
Document Length
Concurrency Level
Time taken for tests
Complete requests
Failed requests
Total body sent
HTML transferred
Request per second
Time per request
Transfer rate
Connection Times(ms)
Percentage of the requests served within a certain time (ms)
使用 gnuplot 工具可以直观的根据图标分析
基本的使用示例
模拟GET请求 -n1000
模拟POST请求 -n1000
模拟并发 -n1000 -c20 (c
查看返回头信息 -n1000 -v 3 (-v 可选2、3、4)
图标展示结果 -n1000 -g g.tsv
参考链接
首頁 web前端 html教學 前端社区带你了解CSS 加载新方式_html/css_WEB-ITnose

前端社区带你了解CSS 加载新方式_html/css_WEB-ITnose

Jun 21, 2016 am 08:51 AM

已有 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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

HTML容易為初學者學習嗎? HTML容易為初學者學習嗎? Apr 07, 2025 am 12:11 AM

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

Gitee Pages靜態網站部署失敗:單個文件404錯誤如何排查和解決? Gitee Pages靜態網站部署失敗:單個文件404錯誤如何排查和解決? Apr 04, 2025 pm 11:54 PM

GiteePages靜態網站部署失敗:404錯誤排查與解決在使用Gitee...

HTML中起始標籤的示例是什麼? HTML中起始標籤的示例是什麼? Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

如何用CSS3和JavaScript實現圖片點擊後周圍圖片散開並放大效果? 如何用CSS3和JavaScript實現圖片點擊後周圍圖片散開並放大效果? Apr 05, 2025 am 06:15 AM

實現圖片點擊後周圍圖片散開並放大效果許多網頁設計中,需要實現一種交互效果:點擊某張圖片,使其周圍的...

網頁批註如何實現Y軸位置的自適應佈局? 網頁批註如何實現Y軸位置的自適應佈局? Apr 04, 2025 pm 11:30 PM

網頁批註功能的Y軸位置自適應算法本文將探討如何實現類似Word文檔的批註功能,特別是如何處理批註之間的間�...

HTML,CSS和JavaScript:Web開發人員的基本工具 HTML,CSS和JavaScript:Web開發人員的基本工具 Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

See all articles