当前位置: 首页 > news >正文

Apache ab 压力测试

转自:http://leepiao.blog.163.com/blog/static/485031302010234352282/

压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计 算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。

1.apache安装

下载:
从Apache官方网站http://httpd.apache.org/download.cgi下载httpd-2.0.58.tar.gz。
安装:
先解压缩tar文件
tar -zxvf  httpd-2.0.58.tar.gz
(1)./configure –prefix=/usr/local/apache2test –enable-so –enable-shared=max –with-mpm=worker –enable-deflate –enable-headers –enable-rewrite –enable-proxy –enable-proxy –enable-ssl –with-ssl=/path/to/install/openssl_0.97i –enable-modules=all && make && make install
(这是正式服务器上的apache2的编译参数,其中–with-mpm=worker –with-ssl=/path/to/install/openssl_0.97i可以根据实际情况做出修改)
然后安装php,并且在/usr/local/apache2test/conf目录下的httpd.conf里面的DSO支持之后加入
AddType application/x-httpd-php .php .phtml .html .htm
AddType application/x-httpd-php-source .phps
最后将测试的php网页文件添加到/usr/local/apache2test/htdocs目录下

(2) make

(3)make install

2.测试工具说明以及安装

ab:
ab是Apache超文本传输协议(HTTP)的性能测试工具。 其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求;
概要:运行/usr/local/apache-install-path/bin/ab -help查看ab的具体命令选项;
命令选项-c concurrency 一次产生的请求个数。默认是一次一个。
-n requests 在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不  具有代表意义
运行结果:主要要注意的是以下内容
Time taken for tests: 总共执行所花费的时间.(以上 1000 次共多久)
Requests per second:  每秒平均可以处理多少个connection.
备注:每次仅仅能针对一个连接做重复的测试。

Siege:
是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
下载/安装
Siege时一个开放源代码项目,可以在http://www.google.com上查找
备注:最好选择2.5以上版本,因为高版本多包括一个辅助工具,能够做增量压力测试,低版本不包括此工具。
安装:
%./configure –prefix=/path/to/install && make && make install

使用说明:
siege使用
在/path/to/install/bin/目录下创建需要测试的链接文件,如www.test.com.url,添加需要的测试的链接

http://10.5.3.122/test/google.php/

http://10.5.3.122/test/baidu.php/

http://10.5.3.122/test/sogou.php/

然后保存。
siege使用样例:
siege -c 20 -r 2 -f www.chedong.com.url
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f www.test.com.url 任务列表:URL列表

输出样例:
** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数

bombardment使用样例:
bombardment www.test.com.url 5 3 4 1
初始化URL列表:www.test.com.url
初始化为:5个用户
每次增加:3个用户
运行:4次
每个客户端之间的延迟为:1秒
输出样例和siege一致,但是会在每一次增量结束之后都有输出。

3.测试方法说明

测试步骤:
方法1.安装apache2后,直接使用apache2的默认设置配置,不做任何修改,进行测试;
方法2.按照以前文档提出的Web容量规划和内存的大小,计算出相应的启动进程数,配置httpd.conf文件,再进行测试;
ServerLimit             400
StartServers            20
MinSpareServers         20
MaxSpareServers         50
MaxClients       300
MaxRequestsPerChild     10000
方法3.超过极限设置,进行测试。(规划容量的2倍进行)

1000个链接,分为不同的并发数请求,10、50、100、200、300、500
ab测试:
/usr/local/apache2.53/bin/ab -n 1000 -c 10 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 50 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 100 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 200 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 300 http://10.5.3.122/test/google.php/
/usr/local/apache2.53/bin/ab -n 1000 -c 500 http://10.5.3.122/test/google.php/
siege测试:
/usr/local/siege/bin/siege -c 10 -r 100 -f www.test.com.url
/usr/local/siege/bin/siege -c 50 -r 20 -f www.test.com.url
/usr/local/siege/bin/siege -c 100 -r 10 -f www.test.com.url
/usr/local/siege/bin/siege -c 200 -r 5 -f www.test.com.url
/usr/local/siege/bin/siege -c 300 -r 3 -f www.test.com.url
/usr/local/siege/bin/siege -c 500 -r 2 -f www.test.com.url
增量测试:
/usr/local/siege/bin/bombardment www.test.com.url 1 100 5 1
/usr/local/siege/bin/bombardment www.test.com.url 1 100 6 1

4.测试结果总结

ab测试:测试并发连接数在50~500的情况下,方法2比方法1性能略有提升,但是相差在10个并发连接数左右,并且方法1方法2在测试并发数100的情况下,实际并发数都相差无几。
siege测试:测试并发数从50之后直到500,性能都有提升,并且在测试并发数100、200、500的情况下,提升相差10~30个实际并发数。
bombardment测试:相差不大。
本次测试的结果不太理想,性能的变化不显著,也不明显,可以所属于失败的测试结果。
分析原因:1.本身硬件配置不高,所以默认设置和修改后的设置变化不明显,对性能的提升也明显不足;
2.负载情况太少,由于系统性能原因,增量测试都不能过大的进行,系统性能load average过高;
3.测试页面程序也太少,没有太大说服力。


ab压力测试

以前安装好APACHE总是不知道该如何测试APACHE的性能,现在总算找到一个测试工具了。就是APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下。
格式: ./ab [options] [http://]hostname[:port]/path
参数:
    -n requests     Number of requests to perform
   //在测试会话中所执行的请求个数。默认时,仅执行一个请求
    -c concurrency Number of multiple requests to make
   //一次产生的请求个数。默认是一次一个。
    -t timelimit    Seconds to max. wait for responses
   //测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
    -p postfile     File containing data to POST
   //包含了需要POST的数据的文件.
    -T content-type Content-type header for POSTing
   //POST数据所使用的Content-type头信息。
    -v verbosity    How much troubleshooting info to print
   //设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
    -w              Print out results in HTML tables
   //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
    -i              Use HEAD instead of GET
  // 执行HEAD请求,而不是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
    //
    -C attribute    Add cookie, eg. 'Apache=1234. (repeatable)
    //-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                    Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                    are a colon separated username and password.
    -P attribute    Add Basic Proxy Authentication, the attributes
                    are a colon separated username and password.
    //-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature
    -d       

转载于:https://www.cnblogs.com/eagleking0318/p/6521029.html

相关文章:

  • 依赖注入框架 InversifyJS
  • 10.30T2 二分+前缀和(后缀和)
  • 数据流的压缩、编码及传递困扰
  • Linux基础命令---mkisofs
  • Linux iptables开放特定端口
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • 线段树模板
  • KVO的使用
  • 自动化测试
  • Unicode编码字符 转换成汉字
  • 简单用户管理系统(P-05)
  • typedef 与指针、多维数组
  • 32、mysql数据库增删改查
  • Android -- 保存文件
  • ORACLE EXECUTE IMMEDIATE 用法详解
  • 0基础学习移动端适配
  • canvas 绘制双线技巧
  • centos安装java运行环境jdk+tomcat
  • golang中接口赋值与方法集
  • Java深入 - 深入理解Java集合
  • JS题目及答案整理
  • node.js
  • Spring Boot MyBatis配置多种数据库
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue.js 移动端适配之 vw 解决方案
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 和 || 运算
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 简单易用的leetcode开发测试工具(npm)
  • 前端_面试
  • 前端知识点整理(待续)
  • 如何选择开源的机器学习框架?
  • 通过几道题目学习二叉搜索树
  • 我从编程教室毕业
  • 写代码的正确姿势
  • 用简单代码看卷积组块发展
  • 运行时添加log4j2的appender
  • 自制字幕遮挡器
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • # 数论-逆元
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (二)linux使用docker容器运行mysql
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (三)终结任务
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (图)IntelliTrace Tools 跟踪云端程序
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)Linux下编译安装log4cxx
  • (转)mysql使用Navicat 导出和导入数据库
  • .NetCore项目nginx发布
  • .NET轻量级ORM组件Dapper葵花宝典
  • .NET性能优化(文摘)
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复