zoukankan      html  css  js  c++  java
  • apache bench进行GET/POST压力测试

    Apache Bench是Apache自带的压力测试工具,选购主机的时候,可以利用该工具模拟网站的连接数,测试在高访问量下,服务器的相应速度。

    这个工具返回的最有用的信息就是服务器每秒能够处理的请求次数(RPS),不过由于测试的页面不同,RPS相差会很大,静态页面的RPS大于动态页面,页面体积越小,RPS越大。所以,RPS是相对的,在选择主机的时候,可以使用同一个页面进行测试,这样得到的数据相对来说更有可比性。

    Apache Bench安装

    windows的话直接下载https://www.apachelounge.com/download/,cd进入bin目录就可以执行命令

    linux的话直接yum install httpd-tools

    使用命令

    ab一般常用参数就是 -n, -t ,和 -c。

    -c(concurrency)表示用多少并发来进行测试;

    -t表示测试持续多长时间,单位是秒;

    -n表示要发送多少次测试请求。

    一般-t或者-n选一个用。

    GET

    对于模拟GET请求进行测试,ab非常简单,就是:ab -n 100 -c 10 'http://testurl.com/xxxx?para1=aaa&para2=bbb'

    POST

    对于模拟POST请求进行测试,则稍微复杂些,需要把将要post的数据(一般是json格式)放在文件里。比如建立一个文件post_data.txt,放入:

    {"actionType":"collect","appId":1,"contentId":"1770730744","contentType":"musictrack","did":"866479025346031","endType":"mobile","recommendId":"104169490_1_0_1434453099#1770730744#musictrack#USER_TO_SONG_TO_SONGS#gsql_similarity_content2content","tabId":0,"uid":"104169490"}

    然后用-p参数解析并发送这个json数据:

    ab -n 100 -c 10 -p post_data.txt -T 'application/json' http://testurl.com/xxxx'

    示例结果说明:
    Document Path:          / 
    Document Length:        315 bytes       HTTP响应数据的正文长度
    Concurrency Level:      800 
    Time taken for tests:   0.914 seconds    所有这些请求处理完成所花费的时间 
    Complete requests:      800             完成请求数 
    Failed requests:        0                失败请求数 
    Write errors:           0                
    Non-2xx responses:      800 
    Total transferred:      393600 bytes     网络总传输量 
    HTML transferred:       252000 bytes     HTML内容传输量 
    Requests per second:    875.22 [#/sec] (mean) 吞吐量-每秒请求数 
    Time per request:       914.052 [ms] (mean)  服务器收到请求,响应页面要花费的时间 
    Time per request:       1.143 [ms] (mean, across all concurrent requests) 并发的每个请求平均消耗时间 
    Transfer rate:          420.52 [Kbytes/sec] received 平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
     
    网络上消耗的时间的分解: 
    Connection Times (ms) 
                  min  mean[+/-sd] median   max 
    Connect:        0    1   0.5      1       3 
    Processing:   245  534 125.2    570     682 
    Waiting:       11  386 189.1    409     669 
    Total:        246  535 125.0    571     684
    整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间 
    其中 50% 的用户响应时间小于 571 毫秒 
    80 % 的用户响应时间小于 652 毫秒 
    最大的响应时间小于 684 毫秒 
    Percentage of the requests served within a certain time (ms) 
      50%    571 
      66%    627 
      75%    646 
      80%    652 
      90%    666 
      95%    677 
      98%    681 
      99%    682 
    100%    684 (longest request)
    测试注意事项:
    1、不要一下子就把并发设置为100,这样的后果类似DDos。并发最大为1024,否则会出现“socket: Too many open files (24)”错误。

    2、建议在本地(SSH登录到服务器上,测试在同一台服务器上的网站,或者测试同一个局域网中的网站)进行测试,这样会排除带宽带来的干扰。

    Apache Bench官方介绍:http://httpd.apache.org/docs/2.4/programs/ab.html
     

  • 相关阅读:
    LocalDB数据库修改排序规则,修复汉字变问号
    设计模式读书笔记-单件模式(创建型模式)
    supersocket实现上传文件
    一步一步架起MyBatis
    windows平台下cmake+gtest工程调试
    嵌入式Linux模块移植四部曲
    一次惊呆的调试经历
    阅读《大型网站技术架构》第五章、第六章心得
    阅读《大型网站技术架构》第四章心得
    阅读《大型网站技术架构》 第三章心得
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13317300.html
Copyright © 2011-2022 走看看