Web网页性能压测工具 ApacheBench 和 WebBench

article/2025/9/22 19:13:25

转载: Web网页性能压测工具 ApacheBench 和 WebBench (米扑博客)

1. ApacheBench

ab 压测工具安装

ab是针对apache的性能测试工具,可以只安装ab工具,支持 http 和 https 网页。

Ubuntu安装:sudo apt-get -y install apache2-utils

CentOS安装:sudo yum -y install httpd-tools

 

ab 参数详细解释

格式: ab [options] [http[s]://]hostname[:port]/path

示例: ab -n 1000 -c 100 https://qq.com/

参数:

  • -n 在测试会话中所执行的请求个数。默认仅执行一个请求。
  • -c 一次产生的请求个数。默认是一次一个请求;若为100,则表示每次并发请求100个。
  • -t 测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
  • -p 包含了需要POST的数据的文件。
  • -P 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
  • -T POST数据所使用的Content-type头信息。
  • -v 设置显示信息的详细程度-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。
  • -V 显示版本号并退出。
  • -w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
  • -i 执行HEAD请求,而不是GET。
  • -x 设置属性的字符串。
  • -X 对请求使用代理服务器。
  • -y 设置属性的字符串。
  • -z 设置属性的字符串。
  • -C 对请求附加一个Cookie:行。其典型形式是name=value的一个参数对,此参数可以重复。
  • -H 对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如,”Accept-Encoding:zip/zop;8bit”)。
  • -A 对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。
  • -h 显示使用方法。
  • -d 不显示”percentage served within XX [ms] table”的消息(为以前的版本提供支持)。
  • -e 产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比’gnuplot’格式更有用。
  • -g把所有测试结果写入一个’gnuplot’或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。
  • -i 执行HEAD请求,而不是GET。
  • -k 启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
  • -q 如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。

POST 请求

### post data 文件 user_login 内容: {"email":"iloveyou@qq.com","password":"qq.com"}

ab -n 100 -kc 10 -p user_login -T 'application/json' -H 'Accept-Encoding:gzip, deflate' -H 'accept-language:zh-Hans-CN;q=1, en-CN;q=0.9' https://qq.com/usercenter/login

参数说明:

-n 100  表示请求100次

-kc 10  表示保持 HTTP KeepAlive 一次并发10个请求

-p user_login 表示POST请求的文件,json数据格式,如上 {"email":"iloveyou@qq.com","password":"qq.com"}

-T 'application/json'  POST数据所使用的Content-type头信息

-H 'Accept-Encoding:gzip, deflate'  表示请求附加额外的头信息,网页压缩算法

-H 'accept-language:zh-Hans-CN;q=1, en-CN;q=0.9'  表示请求附加额外的头信息,网页编码

https://url.com/usercenter/login  表示请求的网址,如米扑科技主页

 

GET 请求

ab -n 1000 -c 100 url

测试时,可以在被测试的服务器上,使用htop命令查看CPU和内存的实时使用情况:

htop 安装 : sudo yum -y install htop

2. WebBench

WebBench 最多可以模拟3万个并发连接,去测试网站的负载能力

WebBench比Apache自带的ab压力测试工具好,安装也方便。

WebBench 官网:Web Bench Homepage

1)准备工作

yum -y install ctags wget make apr* autoconf automake gcc gcc-c++

2)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

3) WebBench 参数含义

[root@mimvp-bj script]# webbench -h
webbench [option]... URL
  -f |--force               Don't wait for reply from server.
  -r |--reload              Send reload request - Pragma: no-cache.
  
-t |--time <sec>          Run benchmark for <sec> seconds. Default 30.
  -p |--proxy <server:port> Use proxy server for request.
  
-c |--clients <n>         Run <n> HTTP clients at once. Default one.
  -9 |--http09              Use HTTP/0.9 style requests.
  -1 |--http10              Use HTTP/1.0 protocol.
  
-2 |--http11              Use HTTP/1.1 protocol.
  --get                    Use GET request method.
  --head                   Use HEAD request method.
  --options                Use OPTIONS request method.
  --trace                  Use TRACE request method.
  -? |-h|--help             This information.
  -V |--version             Display program version.

 

4)WebBench 压测示例

[root@mimvp-bj script]# webbench -c 500 -t 30 http://qq.com/    
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://qq.com/
500 clients, running 30 sec.

Speed=12348 pages/min, 73882 bytes/sec.
Requests: 6174 susceed, 0 failed.

参数说明:

-c 500  表示同时产生500个并发连接

-t 30  表示请求持续时间

计算每次请求耗时:

Seconds / Requests = 30 / 6174 = 4.86 ms/次

系统分析常用的工具命令


http://chatgpt.dhexx.cn/article/Q6QLt5bB.shtml

相关文章

网站压力测试工具webbench

webbench最多可以模拟3 万个 并发连接 去测试网站的负载能力&#xff0c;个人感觉要比Apache自带的ab压力测试工具好&#xff0c;安装使用也特别方便。 1、适用系统&#xff1a;Linux 2、编译安装&#xff1a; 引用 wget http://blog.s135.com/soft/linux/webbench/webbench-1.…

web压力测试-Web Bench

1.web bench下载&#xff0c;地址&#xff1a;http://home.tiscali.cz/~cz210552/webbench.html 2.wen bench安装&#xff1a; [rootweb111 tmp]#tar -zxvf webbench-1.5.tar.gz [rootweb111 tmp]# cd webbench-1.5 [rootvstar111 webbench-1.5]# ll total 28 lrwxrwxrwx…

web压力测试工具(持续更新)

由于需要测试zabbix监控性能&#xff0c;特意研究了下web压力测试工具&#xff0c;工具如下&#xff1a; 第一款&#xff1a;http_load http_load是一款基于Linux平台的web服务器性能测试工具&#xff0c;用于测试web服务器的吞吐量与负载&#xff0c;web页面的性能&#xff…

十个免费的 Web 压力测试工具(转)

本文列举了是十个免费工具&#xff0c;可以用来进行Web的负载/压力测试的。这样你就可以知道你的服务器以及你的WEB应用能够扛得住多少的并发量&#xff0c;以及网站性能。 0. Grinder – Grinder是一个开源的JVM负载测试框架&#xff0c;它通过很多负载注射器来为分布式测试提…

vue页面刷新时,执行了哪些生命周期——谨慎使用beforeDestroy和destroyed

先来回顾一下vue实例的生命周期&#xff08;以下图片来自官方文档&#xff09;。 我的项目中某个组件在localstorage中存了数据&#xff0c;要求离开页面时需要把localstorage中相应的数据清空。于是我将清空storage的代码写在了beforeDestroy中。但在刷新页面时&#xff0c;st…

浏览器刷新vue为什么不会走beforeDestroy和destroyed生命周期

浏览器刷新vue为什么不会走beforeDestroy和destroyed生命周期 业务场景: 需要在页面卸载的时候去处理一些数据,比如清空 localStorage 然后就会把一些业务逻辑写在beforeDestroy或者destroyed的生命周期里 浏览器刷新的时候会走这两个生命周期吗 答案是不会 不是说在组件卸…

vue中,组件使用keep-alive缓存,beforeDestroy和destroyed会被调用吗?

分析 首先&#xff0c;答案是不会的&#xff0c;准确的说是不会直接调用。 默认情况下&#xff0c;也就是没有设置keep-alive,当离开当前路由时&#xff0c;会直接调用beforeDestroy和destroyed来销毁。 当组件设置keep-alive后&#xff0c;不会直接调用这个销毁周期函数&…

vue3.0 The `destroyed` lifecycle hook is deprecated. Use `unmounted` instead

用vue3.0使用了destroyed&#xff0c;报错 报错意思是&#xff1a;不推荐使用“已销毁”生命周期挂钩。改用“unmounted”在vue3.0 中&#xff1a; destroyed 生命周期选项被重命名为 unmounted beforeDestroy 生命周期选项被重命名为 beforeUnmount 把destroyed 改为 unmount…

Glide异常:You cannot start a load for a destroyed activity

项目上线后&#xff0c;Bugly上统计到错误如下&#xff1a; 原因很简单在Glide加载图片的时候发现发现控件所在的Activity已经被销毁了。搜索一下这个错误信息"You cannot start a load for a destroyed activity"&#xff0c;定位问题&#xff1a; 即&#xff1a;在…

Vue keep-alive后不能触发destroyed

<keep-alive :include"cachedViews"><router-view :key"key" /></keep-alive> 当我们在项目中配置了keep-alive后&#xff0c;会发现页面关闭不能触发beforeDestroy。 首先我们来看看keep-alive是什么东西 keep-alive是Vue的内置组件&…

小米开机the system has been destroyed

原因&#xff1a;可能是升级/刷机系统之时重启导致&#xff0c;也可能是刷机时选择了【全部删除并/lock】导致系统损坏&#xff0c;非硬件损坏&#xff0c;可以通过刷机解决。 解决步骤 1、解锁BL&#xff0c;登录后进行解锁。 2、解锁后刷机即可 记得点击全部删除

vue 生命周期4 销毁流程 beforeDestroy destroyed

销毁流程&#xff1a; 当调用了vm.$destroy 则触发销毁流程 验证下&#xff1a; 加一个按钮和销毁事件 效果&#xff1a; 发现点击了vm销毁,但是页面上仍不变 因为虽然vm没了但是vm的工作成果还是在的 并不是vm销毁后,它的生成的dom也销毁掉,只不过是没有人帮你去管理了 …

浏览器刷新为什么不会走销毁(beforeDestroy和destroyed)周期?

浏览器刷新为什么不会走销毁&#xff08;beforeDestroy和destroyed&#xff09;周期&#xff1f; 为什么我要写这篇博客呢&#xff0c;还有就是为什么我会问这个问题呢&#xff1f; 因为之前我遇到一个内存泄漏的问题&#xff0c;然后呢我在vue的beforeDestroy生命周期钩子函…

electron报错Error: Object has been destroyed

文章目录 问题描述解决方案 问题描述 在 Electron 中&#xff0c;当一个窗口被销毁后&#xff0c;与该窗口相关联的 JavaScript 对象也会被销毁&#xff0c;再次访问已被销毁的窗口对象时&#xff0c;会导致 Error: Object has been destroyed 错误。 例如之前在写多窗口pinia…

【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed 观察者模式 监听物体被销毁

MissingReferenceException: The object of type ‘Text’ has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. 该情况发生于我的观察者模式在重新加载当前场景时 监听的物体被…

统一接口平台(一) 产品介绍

产品介绍 前端应用系统通过统一接口平台获取数据&#xff0c;不直接与外部系统接口打交道。统一接口平台通过多种方式与外部系统联接获取数据并向各前端应用系统提供各种数据格式包&#xff0c;将外部系统有效地隔离在业务系统之外。前端应用系统需要请求的外部接口需要在统一…

常见的几个接口管理平台简介

年前最后一更&#xff0c;自从Internet服务开发以来&#xff0c;作为开发者阵营&#xff0c;我们已经在实践中证明了前端和后端分离开发模型正逐渐成为越来越多的Internet公司构建服务和应用程序的一种方式。 前端和后端分离的优点很多。一个重要的优点是&#xff0c;对于后台服…

前后端对接及接口管理平台浅析

文章目录 一、接口是什么&#xff08;附带简易案例)二、Tomcat的Servlet三、json四、接口文档&#xff1a;五、管理平台 每一个完整的项目都是不是一个人的功劳&#xff0c;是一个团队的心血&#xff01;那么在这个项目从无到有的过程中&#xff0c;一个团队是如何凝聚呢&#…

如何搭建一个自己的接口自动化测试平台

0、实现方式 后端&#xff1a;java前端&#xff1a;vueelement-uimock&#xff1a;mock-server其它&#xff1a;redis 感谢大家的莅临&#xff0c;小编在文章末尾为大家准备了一些福利&#xff0c;需要的可以获取哦。 1、数据构建 ​ 我们在测试过程中发现测试数据的构建非…