【Apache】从Apache官网下载windows版apache服务器,并用AB进行压力测试

时间:2022-05-11 07:10:03

1、下载稳定版2.2.31

    http://httpd.apache.org/

【Apache】从Apache官网下载windows版apache服务器,并用AB进行压力测试


2.2.*和2.4.*区别?

    httpd-2.2.x(prefork)
    httpd-2.4.x(event) 编译时可以使用--with-mpm=prefork手动指定其使用prefork
    PHP官方推荐httpd使用prefork(php能更稳定地运行),而不是线程化的worker和event,httpd-2.4.x默认使用线程化的event作为mpm.
    Linux上很多PECL库都是非线程安全的,libphp5.so在线程化的httpd(event/worker)中运行可能会出现一些问题,为了保持兼容性和稳定性,PHP一般还是使用httpd-2.2.x(prefork)这个分支.


【Apache】从Apache官网下载windows版apache服务器,并用AB进行压力测试



apache本身不提供已编译的安装包,只提供源码,如果你自己无法编译,可以选择下面这些官方推荐的第三方提供编译的网站。
其中后两个是有名的wamp以及xampp集成环境,如果只想下载apache可以选择前三个网站,这里我们第一个ApacheHaus为例。

【Apache】从Apache官网下载windows版apache服务器,并用AB进行压力测试

选择版本进行下载(Apache 2.2 VC9)


【Apache】从Apache官网下载windows版apache服务器,并用AB进行压力测试


【Apache】从Apache官网下载windows版apache服务器,并用AB进行压力测试



2、使用

(1)解压到指定目录

【Apache】从Apache官网下载windows版apache服务器,并用AB进行压力测试

(2)命令行下进入到apache下面的bin目录,输入:httpd -k install,把apache安装成windows后台服务。

(3)利用ApacheMonitor来启动你的apache



3、说明

(1)修改端口

默认80端口,若端口被其他应用程序占用:(查看80端口是否被占用,命令行下输入:netstat -aon|findstr "80"

    打开apache目录下的conf/httpd.conf  搜索   "Listen 80";
    修改为Listen 8088;
    保存之后再重新启动apache。


(2)httpd -k install 输入该命令后查看服务是否安装成功
开始-->运行-->services.msc-->确定
打开后如果在服务列表能够看到apache字样,说明,服务安装成功,可以直接点击左边的启动按钮来启动服务


(3)如何启动、停止、重启apache?

服务 services.msc;

找到服务后,右键操作

【Apache】从Apache官网下载windows版apache服务器,并用AB进行压力测试



4、使用AS进行压力测试

        压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。再简单点,就是你网站的性能的一个评定,性能由本身程序和网站服务器共同决定。 而进行压力测试,就是为了让你更好得掌握网站的各个信息。


        Apache自带工具AB是什么?

        Apache Benchmark简称为ab,是apache自带的用于HTTP Server测试的工具。它可以接受单一的URL,然后重复地按照指定的多个独立线程的方式加载,并使用不同的命令行参数控制访问的次数、最大的并发访问数等。


        AB怎么用?


cmd,进入apache目录的bin目录下:

# ab -n1000 -c10 http://192.168.116.193/index.html    #表示每次并发10个请求,总共请求1000次

This is ApacheBench, Version 2.3<$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus TechnologyLtd, http://www.zeustech.net/ Licensed to The Apache Software Foundation,http://www.apache.org/ Benchmarking 192.168.116.193 (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software:        nginx/1.0.15               #平台apache 版本 Server Hostname:        192.168.116.193            #服务器主机名 Server Port:            80                         #服务器端口 Document Path:          /index.html                #测试的页面 Document Length:        3698 bytes                 #测试页面大小 Concurrency Level:      10                         #并发数 Time taken for tests:   0.577 seconds              #整个测试耗时 Complete requests:      1000                       #总共完成的请求数量 Failed requests:        0                          #表示失败的总请求数,这里的失败指请求在连接服务器、发送数据、接收数据等环节发生异常,以及无响应超时等情况 Write errors:           0                          #网络连接写入错误数 Total transferred:      3917820 bytes              #测试过程中产生的网络传输总量 HTML transferred:       3705396 bytes              #测试过程中产生的HTML传输量 Requests per second:    1733.55 [#/sec] (mean)     #表示服务器吞吐量,每秒事务数,括号中的 mean 表示这是一个平均值 Time per request:       5.768 [ms] (mean)          #表示用户请求的平均响应时间,后面括号中的mean表示这是一个平均值 Time per request:       0.577 [ms] (mean, across all concurrentrequests)   #表示服务器请求平均处理时间,即实际运行时间的平均值 Transfer rate:          6632.57 [Kbytes/sec] received      #表示这些请求在单位时间内从服务器获取的数据长度,可以帮助排除是否存在网络流量过大导致响应时间延长的问题 Connection Times (ms) min  mean[+/-sd] median   max Connect:        0   2   5.5      2     85 Processing:     1   3   6.3      2     84 Waiting:        0   2   5.1      2     82 Total:          2   5   8.8      4    100 #网络上消耗的时间的分解,表示这些请求在单位时间内从服务器获取的数据长度 Percentage of the requests served within acertain time (ms) 50%      4 66%      5 75%      5 80%      5 90%      6 95%      9 98%     19 99%     80 100%   100 (longest request) #整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于4毫秒,60%的用户响应时间小于5毫秒,最大的响应时间小于100 毫秒



 Ab命令参数注释:

  -n    #指定在测试会话中所执行的请求个数。默认时,仅执行一个请求。 

  -c    #指定一次产生的请求个数。默认是一次一个。

  -t    #测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。

  -p    #包含了需要POST的数据的文件.

  -T    #POST数据所使用的Content-type头信息。

  -v    #设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。

  -w    #以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。

  -I    #执行HEAD请求,而不是GET。