云计算运维

Windows Server 2003 - Windows Server 2019 系统工具,Linux系统脚本,Mysql、Nginx、PHP、Redis、K8S、Seafile、Weblogic 、Jenkins、DNS、DHCP、FTP、IIS、Zookeeper、Rabbitmq、Oracle、Tomcat、Mavrn等服务搭建维护,请关注我.

Apache的Web压力测试工具


网站压力测试就是测试网站能够承受多大的访问量,以及在大访问量的情况下网站的性能。这些指标会直接影响用户的体验,因此在网站上线前一般都要做压力测试。压力测试也是考察网站使用的相关web服务器和框架的一个重要手段。

因为和真实的环境不同,压力测试通过模拟得到的结果不会和实际的负载完全相同,但它仍是一个很好的基准比较。做压力测试时也会尽可能地模拟实际的情况。

一、安装apache的ab测试

yum -y install httpd-tools
测试安装是否成功:

ab -V

二、测试服务器配置

2核 4G内存 10Mb带宽 服务器

三、测试开始

-n requests    #执行的请求数,即一共发起多少请求。
-c concurrency    #请求并发数。
-t timelimit    #测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-s timeout    #指定每个请求的超时时间,默认是30秒。
-b windowsize    #指定tcp窗口的大小,单位是字节。
-B address    #指定在发起连接时绑定的ip地址是什么。
-p postfile    #指定要POST的文件,同时要设置-T参数。
-u putfile    #指定要PUT的文件,同时要设置-T参数。
-T content-type    #指定使用POST或PUT上传文本时的文本类型,默认是'text/plain'。
-v verbosity    #设置详细模式等级。
-w    #将结果输出到html的表中。
-i    #使用HEAD方式代替GET发起请求。
-y attributes    #以表格方式输出时,设置html表格tr属性
-z attributes    #以表格方式输出时,设置html表格th或td属性。
-C attribute    #添加cookie,比如'Apache=1234'。(可重复)
-H attribute    #为请求追加一个额外的头部,比如'Accept-Encoding: gzip'。(可重复)
-A attribute    #对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。
-P attribute    #对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-X proxy:port   #指定代理服务器的IP和端口。
-V              #打印版本信息。
-k              #启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
-d              #不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
-q              #如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。
-g filename     #把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。
-e filename     #产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
-r              #当收到错误时不要退出。
-h              #输出帮助信息
-Z ciphersuite  指定SSL/TLS密码套件
-f protocol     指定SSL/TLS协议(SSL3, TLS1, TLS1.1, TLS1.2 or ALL)

发起1000个请求,并发数为50个

ab -n 1000 -c 50 http://www.ossq.cn/

-n总请求数
-c并发连接数

可以看到日志已经起来了

查看CPU占用 85%

查看流量和IO情况

结果分析

具体介绍结果参数

Server Software:        Apache/2.2.25 (服务器软件名称及版本信息)
Server Hostname:        localhost (服务器主机名)
Server Port:            80 (服务器端口)
Document Path:          /index.php (供测试的URL路径)
Document Length:        10 bytes (供测试的URL返回的文档大小)
Concurrency Level:      100 (并发数)
Time taken for tests:   0.247 seconds (压力测试消耗的总时间)
Complete requests:      1000 (压力测试的总次数)
Failed requests:        0 (失败的请求数)
Write errors:           0 (网络连接写入错误数)
Total transferred:      198000 bytes (传输的总数据量)
HTML transferred:       10000 bytes (HTML文档的总数据量)
Requests per second: 1.60 [#/sec] (mean)  //吞吐速率,大家最关心的指标之一
Time per request: 6254.054 [ms] (mean)  //用户平均请求等待时间,大家最关心的指标之二
Time per request: 625.405 [ms] (mean, across all concurrent requests)  //服务器平均请求处理的时间,大家最关心的指标之三

总结:

当前环境的服务器,在50人同时访问的时候CPU就已经满载了,其他的都还未达到满载,所以本服务器最多能承受50人一下的同时访问,升级建议的话就是吧2H升级为4H,理论可以承受到100人同时访问。

  • 分享:
评论
还没有评论
    发表评论 说点什么