使用apache的ab命令进行压测
1. 背景:互联网发达的今天,大大小小的网站如雨后春笋,不断出现,但是想要做出一个网站很简单,但是想要做好一个网站,非常非常难,首先:网站做好之后的功能怎么样这都是次要的,主要的是你的网站能承受怎么样的访问量,一个在高压访问下,能承受很高峰值的访问并发才能称得上是一个好的网站,那么作为一个程序员,当你搭建好你的网站之后,你应该怎么测试你的网站并发访问量呢?
接下来要介绍的就是apache的ab命令压测:
2.在学习使用ab命令之前,首先要了解压力测试的几个概念:(自己可以上网查下具体的概念)
吞吐率(Requests per second)
概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests并发连接数(The number of concurrent connections)
概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。并发用户数(The number of concurrent users,Concurrency Level)
概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)服务器平均请求等待时间(Time per request: across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level
- -n即requests,用于指定压力测试总共的执行次数。
- -c即concurrency,用于指定压力测试的并发数。
- -t即timelimit,等待响应的最大时间(单位:秒)。
- -b即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
- -p即postfile,发送POST请求时需要上传的文件,此外还必须设置
-T参数。 - -u即putfile,发送PUT请求时需要上传的文件,此外还必须设置
-T参数。 - -T即content-type,用于设置Content-Type请求头信息,例如:
application/x-www-form-urlencoded,默认值为text/plain。 - -v即verbosity,指定打印帮助信息的冗余级别。
- -w以HTML表格形式打印结果。
- -i使用HEAD请求代替GET请求。
- -x插入字符串作为table标签的属性。
- -y插入字符串作为tr标签的属性。
- -z插入字符串作为td标签的属性。
- -C添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
- -H添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
- -A添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
- -P添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
- -X指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。
- -V打印版本号并退出。
- -k使用HTTP的KeepAlive特性。
- -d不显示百分比。
- -S不显示预估和警告信息。
- -g输出结果信息到gnuplot格式的文件中。
- -e输出结果信息到CSV格式的文件中。
- -r指定接收到错误信息时不退出程序。
- -h显示用法信息,其实就是
ab -help。 - 4.实际测试:
-

5.分析上面的压测结果:
Server Software: Apache/2.2.25 (服务器软件名称及版本信息)
Server Hostname: www.xxx.com(服务器主机名)
Server Port: 80 (服务器端口)
Document Path: /lol (供测试的URL路径)
Document Length: 0 bytes (供测试的URL返回的文档大小)
Concurrency Level: 100 (并发数)
Time taken for tests: 0.800 seconds (压力测试消耗的总时间)
Complete requests: 100 (压力测试的的总次数)
Failed requests: 0 (失败的请求数)
Total transferred: 16342 bytes (传输的总数据量)
HTML transferred: 0 bytes (HTML文档的总数据量)
Requests per second: 125.03 [#/sec] (mean) (平均每秒的请求数)
Time per request: 799.805 [ms] (mean) (所有并发用户(这里是100)都请求一次的平均时间)
Time per request: 7.998 [ms] (mean, across all concurrent requests) (单个用户请求一次的平均时间)
Transfer rate: 19.95 [Kbytes/sec] received (传输速率,单位:KB/s)
在上面的测试中,我们设置的压力测试总次数以及并发数并没有让服务器感觉到什么「压力」,现在我们再来看一个「压力山大」的执行命令:
ab -n 1000 -c 100 localhost/index.php,这个时候apache就直接罢工——拒绝访问了:
D:\study\Apache\bin>ab -n 100 -c100 http://www.xxx.com;
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
在上面的压力测试中,Apache使用的是默认配置,并没有经过任何优化措施处理。实际上,Apache在经过配置优化
后,只要服务器硬件够用,Apache服务器是能够撑起1000的并发量的。
6.ab进行app接口的压测:
ab -n 400 -c20 "http://www.xxx.com/api.php?sig=......";
将需要压测的接口,用 " " ;
7.ab进行post传参的压测
ab -n 400 -c20 -p parm.txt -T "application/x-www-form-urlencoded" http://localhost:3000/login
将 parm.txt放在和ab.exe相同的文件夹中,parm.txt中存放的是需要post格式传递的参数。
-T :post请求的head头。
使用apache的ab命令进行压测的更多相关文章
- Mac 使用ab命令进行压测
Mac 使用ab命令进行压测 1.在Mac中配置Apache Mac中应该有自带了Apache,详细配置见http://www.cnblogs.com/snandy/archive/2012/11/1 ...
- ab命令做压测测试
1. 背景:互联网发达的今天,大大小小的网站如雨后春笋,不断出现,但是想要做出一个网站很简单,但是想要做好一个网站,非常非常难,首先:网站做好之后的功能怎么样这都是次要的,主要的是你的网站能承受怎么样 ...
- wrk,ab,locust,Jmeter 压测结果比较
背景: 项目需要对一批接口进行压测,要求是接口的QPS(Quest Per Second每秒请求数)达到6万以上由于楼主一直使用的压力测试工具是jmeter,但是jmeter单台电脑无法达到6万的QP ...
- 使用AB对Nginx压测和并发预估
简介 ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的. # 1.ab每次只能测试一个URL,适合做重复压力测试 # 2.参数很多,可以支持添加c ...
- jmeter命令行压测
简介:使用非GUI模式,即命令行模式运行jmeter测试脚本能够大大缩减系统资源 1.配置jdk及添加环境变量 变量名:JAVA_HOME 变量值: C:\Program Files\Java\jdk ...
- apache的ab命令做压力测试
1. 最基本的关心两个选项 -c -n 例: ./ab -c 100 -n 10000 http://127.0.0.1/index.php -c 100 即:每次并发100个-n 10000 即: ...
- 使用apache 的 ab命令压力测试nginx服务器
nginx压力测试方法: #ab命令 #安装ab #Centos系统 yum install apr-util #Ubuntu系统 sudo apt-get install apache2-utils ...
- ab压测 apr_socket_recv: Connection reset by peer (104)错误解决方法
用apache自带ab命令进行压测,报了如下错误: 原因是在ab的程序源码中对并发数有限制. 解决办法:修改apache源码support下面的ab.c源代码,然后重新编译.修改内容如下:
- Apache 的 ab 压测工具快速使用
ab 是一个 httpd 自带的很好用的压力测试工具,它是 apache bench 命令的缩写.ab 命令会创建多个并发访问线程,模拟多个访问者同时对某一 URL 地址进行访问.可以用来测试 apa ...
随机推荐
- Spring Data JPA原生SQL查询
package com.test.cms.dao.repository;import org.springframework.stereotype.Repository;import javax.pe ...
- 用一张图片解释清楚jQuery中10个强大的遍历函数
为什么我们要进一步提炼一系列元素,难道是jQuery选择语法不够强大?让我们从示例开始.在下面提到的网页中,当一个star被点击时,我们需要给它以及左边的每个star添加class"on&q ...
- 用phpUnit入门TDD
用phpunit实战TDD系列 从一个银行账户开始 假设你已经 安装了phpunit. 我们从一个简单的银行账户的例子开始了解TDD(Test-Driven-Development)的思想. 在工程目 ...
- 20155306 2016-2017-2 《Java程序设计》第七周学习总结
20155306 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 时间与日期 三种时间: 格林威治标准时间(GMT)的正午是太阳抵达天空最高点之时, ...
- 正则表达式&自定义异常 典型案例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static vo ...
- ubuntu git 简单入门【转】
转自:http://blog.chinaunix.net/uid-20718384-id-3334859.html 1. 安装 sudo apt-get install git-core 2. 初始 ...
- linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction
信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...
- HDU 2825 Wireless Password
题目链接:HDU-2825 题意:给出m个单词,要构造出满足包含其中大于等于k个单词的字符串,字符只包括小写字母,问长度为n的这样的串有多少个. 思路:令dp[i][j][k]表示当前已经构造了i个字 ...
- vue总结 02指令
指令 v-text 预期:string 详细: 更新元素的 textContent.如果要更新部分的 textContent ,需要使用 {{ Mustache }} 插值. 示例: <span ...
- Android 浏览器启动应用程序
点击浏览器中的URL链接,启动特定的App. 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]" ...