文章目录

  • 使用ab工具对Apache网页进行压力测试
    • 应用场景
  • 实验步骤
    • 配置DNS服务
    • 配置apaches
    • 执行以下命令开始压力测试

使用ab工具对Apache网页进行压力测试

应用场景

做测试或者服务端开发的同学经常想要知道我们的后台服务能同时承载多少用户量,通过模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。压力测试需要确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。

了解ab工具

  • 这是就需要用到一些压测工具来对服务器进行并发压力测试。常见的压力测试工具有Jmeter,LoadRunner,ab等等,
  • 一般来说做压力测试,建议使用Jmeter或者LoadRunner,但是简单场景的压测使用ab就很方便快捷,还可以在linux服务器上进行,可以与其他压测工具做下对比。
  • ab是apachebench命令的缩写,ab命令会创建多个并发访问线程,模拟多个访问者同时对某一HTTP URL地址进行访问。
  • ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

实验步骤

关闭防火墙及核心防护:

 systemctl stop firewalldsetenforce 0iptables -F

配置DNS服务

[root@localhost ~]# vim /etc/named.conf
options {listen-on port 53 { any; };listen-on-v6 port 53 { ::1; };directory       "/var/named";dump-file       "/var/named/data/cache_dump.db";secroots-file   "/var/named/data/named.secroots";allow-query     { any; };[root@localhost ~]# vim /etc/named.rfc1912.zones         zone "zxc.com" IN {type master;file "zxc.com.zone";allow-update { none; };
[root@localhost named]# vim text.com.zone www    IN   A    192.168.136.88[root@localhost ~]# systemctl restart named

配置apaches

解压软件包

 zxvf apr-1.6.2.tar.gz tar zxvf apr-util-1.6.0.tar.gz tar jxvf httpd-2.4.29.tar.bz2 mv apr-1.6.2 httpd-2.4.29/srclib/aprmv apr-util-1.6.0 httpd-2.4.29/srclib//apr-util

安装Apache服务必须的依赖包

cd httpd-2.4.29/yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel

进入httpd软件目录进行编译安装前配置

cd /opt/httpd-2.4.29/
yum -y install zlib-devel
进入目录后执行以下命令:./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate    ## 必须要有!
make  && make install

建立软链接

ln -s /usr/local/httpd/bin/ab /usr/sbin/

编辑http配置文件,将这三个模块开启

vim /usr/local/httpd/conf/httpd.conf确保以下三个模块前面无注释符号#,如果有就删去:LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule filter_module modules/mod_filter.so

建一个站点页面,在其中添加图片

cd /usr/local/httpd/htdocs/    ## 进入站点目录添加图片vim index.html    ## 编辑站点页面文件<img src="cat.jpg"/>

验证语法并开启服务

[root@localhost bin]# cd /usr/local/httpd/bin/
[root@localhost bin]# /usr/local/httpd/bin/httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK
如果返回值为:Syntax OK 就没有问题[root@localhost bin]# ./apachectl starthttpd (pid 40395) already running

执行以下命令开始压力测试

[root@localhost bin]# ab -r -n 3000 -c 1000 www.zxc.com/index.html(以每秒1000个请求的速度对此接口进行访问,知道请求数达到3000个为止,忽略接口返回的错误信息)
Benchmarking www.zxc.com (be patient)
Completed 300 requests
Completed 600 requests
Completed 900 requests
Completed 1200 requests
Completed 1500 requests
Completed 1800 requests
Completed 2100 requests
Completed 2400 requests
Completed 2700 requests
Completed 3000 requests
Finished 3000 requestsServer Software:        Microsoft-IIS/7.5
Server Hostname:        www.zxc.com
Server Port:            80Document Path:          /index.html
Document Length:        5066 bytesConcurrency Level:      1000
Time taken for tests:   84.126 seconds
Complete requests:      3000
Failed requests:        2928(Connect: 0, Receive: 976, Length: 976, Exceptions: 976)
Non-2xx responses:      2266
Total transferred:      11198916 bytes
HTML transferred:       10704928 bytes
Requests per second:    35.66 [#/sec] (mean)
Time per request:       28041.847 [ms] (mean)
Time per request:       28.042 [ms] (mean, across all concurrent requests)
Transfer rate:          130.00 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0  319 925.7    106    9152
Processing:   194 10147 10462.1   3785   38210
Waiting:        0 3007 6934.1    398   34605
Total:        294 10466 10417.9   4869   41376Percentage of the requests served within a certain time (ms)50%   486966%  2100175%  2100380%  2100490%  2100595%  2517198%  3518799%  36438100%  41376 (longest request)

第一次 84.126

第二次 73.478

第三次 80.835

现在模拟对网站进行优化,开启gzip压缩功能

vim /usr/local/httpd/conf/httpd.conf   ## 编辑http配置文件在文件末尾追加写入以下内容开启gzip压缩:<IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/html text/plain text/css text/html text/javascript text/jpg text/pngDeflateCompressionLevel 9SetOutputFilter DEFLATE
</IfModule>

要重启Apache服务

./apachectl stop   ## 停止服务
./apachectl start  ## 开启服务

第一次 71.492

第二次 72.865

第三次 70.078

对比这3次测试结果,可以较明显看出开始gzip页面压缩后,测试时间明显减少了**

ab压力测试(了解ab工具,实验对网页进行测试)相关推荐

  1. linux测试并发的工具,Linux下使用Jmeter测试并发

    安装前:必须安装java(此处忽略java安装,百度一大推) 一.安装:官网下载包  >>>http://jmeter.apache.org/download_jmeter.cgi ...

  2. 【正则表达式】regex101超好用的正则表达式测试和学习工具(内含使用教程、Python和C#正则表达式代码示例)

    文章目录 1.使用介绍 2.正则表达式例子 2.1 Python例子 2.2 C#例子 今天使用了正则表达式从文本中捕获目标数据,虽然之前有一定的基础,但是现在忘的差不多了,感觉自己纯手写的正则表达式 ...

  3. 测试覆盖率统计工具_使用测试工具和方法进行测试覆盖率

    测试覆盖率统计工具 概述: 要定义"测试覆盖率",我们必须谈论以下主题: 测试覆盖的目的. 不同类型的测试覆盖率标准. 测试覆盖率指标 单元测试范围 测试覆盖率工具 测试覆盖范围的 ...

  4. apache ab压力测试工具-批量压测脚本

    概述 ab(Apache benchmark)是一款常用的压力测试工具.简单易用,ab的命令行一次只能支持一次测试.如果想要批量执行不同的测试方式,并自动对指标进行分析,那么单靠手工一条一条命令运行a ...

  5. Apache ab压力测试工具

    查看apache是否安装 # rpm -qa httpd httpd-2.2.3-63.el5.centos (在apache 版本2以后,apache全部改名为httpd) ab压力测试工具是apa ...

  6. ab压力测试工具linux,【Linux】ApacheBench(ab)压力测试工具

    AB的简介 ab是apachebench命令的缩写. ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试.比 ...

  7. 【Apache】Apache ab压力测试工具Window下载和用法详解

    ab是apache自带的网站压力测试工具.  使用起来非常的简单和方便.  不仅仅是可以apache服务器进行网站访问压力测试,还可以对其他类型的服务器进行压力测试.  比如nginx,tomcat, ...

  8. ab压力测试php脚本,ab压力测试工具-批量压测脚本

    ab(Apache benchmark)是一款经常使用的压力测试工具.简单易用,ab的命令行一次只能支持一次测试.若是想要批量执行不一样的测试方式,并自动对指标进行分析,那么单靠手工一条一条命令运行a ...

  9. c++ http服务器之Apache工具ab压力测试(nginx与brpc)

    系列服务器开发 文章目录 系列服务器开发 前言 一.ab是什么? 二.ab测试实例nginx 1.nginx环境准备与安装 2.ab测试nginx本身的性能 3.ab测试基于brpc的http服务器性 ...

最新文章

  1. 字符串循环同构的最小表示法(转)
  2. (C++)A+B 输入输出练习V 输入的第一行是一个正数N,表示后面有N行。每一行的第一个数是M,表示本行后面还有M个数。
  3. Python3 strip()去除字符串首尾指定信息
  4. linq to sql 多条件组合查询
  5. 同一页面引入多个JS文件的编码问题
  6. 基于Spring MVC的ECharts动态数据实时展示
  7. redis持久化之rdb
  8. 使用Power BI Desktop可视化分析冠状病毒数据
  9. Linux内核部件分析 设备驱动模型之bus
  10. “狮”口逃生!长颈鹿勇斗狮群 4小时后脱身
  11. caffe 安装指南
  12. PLC数据采集解决方案及数采网关
  13. win10专业版修改家庭计算机,win10家庭版升级专业版的最完美的方法_win10专业版技巧...
  14. JSP 创建 CRUD 示例 MyBatis DAO 用于数据库JSTL 用于遍历记录
  15. 如何发送电子邮件到别人邮箱?
  16. 用浏览器收藏夹的书签保存javascript的简单脚本
  17. Oracle Parallel Query(OPQ)
  18. 在DAZ3D STUDIO中使用.OBJ和.FBX三维模型
  19. # unity shader 后期轮廓(更新中)
  20. 罗素问题 ——来自知乎大神

热门文章

  1. Kafka解惑之Old Producer(1)—— Beginning
  2. Mozilla发布最大公共语音数据集Common Voice
  3. Go基础编程:环境搭建
  4. 一个即将写入MySQL源码的官方bug解决之路
  5. 【git重案组】如何逃避git blame的追踪?
  6. Electron使用NodeJS扩展模块调用DLL
  7. Android O 迁移应用官方指南
  8. 关于机器学习的训练数据、验证数据和测试数据的形象比喻
  9. 在ubuntu 14.04搭建React Native for Android开发环境
  10. 疫情之下的求职姿势:视频面试,电话面试这样做,你就已经赢一半了!