技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 吞吐率――我们需要了解什么

吞吐率――我们需要了解什么

浏览:2237次  出处信息

     我们一般使用单位时间内服务器处理的请求数来描述WEB服务器的并发处理能力――吞吐率(Throughput),单位是 reqs/s

    我们一般使用压力测试,来统计WEB服务器的吞吐率。其包括如下条件:

  • 同一时间,到底有多少人奇迹般的一起向服务器发送请求――并发用户数
  • 上面那些用户,一共向你的服务器发送了多少请求?――总请求数
  • 这些人,疯了般的管你要啥东西呢?――请求资源描述
  • 让机器更好的干活,让老板更省钱

        我们怎么才能让机器更好的干活?我们需要多少机器才能更好的满足我们的要求?

  • 一台机器,完成所有的请求――省钱了,我们是穷人,我们只有一台机器。用户会在漫长的等待后,冷笑着走开。然后老板也会告诉你“滚蛋”
  • 一百台机器,完成所有的请求――用户很开心,老板很疯狂。“奶奶个熊滴,听人说十台机器就够了,你用了一百台,另九十台你想架魔兽私服啊?”。于是,你也走人了。
  •     综上,我们需要知道何时才能让最合适数量的资源,来完成我们的需求。

        这里面,我们需要掌握两个情况,我们的机器最多能同时满足多少用户;以及我们一共有多少用户!

    时间就是生命

        时间就是生命,当我们渐渐老去时,我们应该把握住生命中的第一分钟,或者冲动,或者寻找冲动。

        有些跑题了,我想说的是“时间就是生命”!

        在压力测试的过程中,我们需要关心的时间指标有两种:

  • 用户平均请求等待时间――主要用于衡量服务器在一定并发用户数的情况下,对于单个用户的服务质量。
  • 服务器平均请求处理时间――用于衡量服务器的整体服务质量
  • ab 压力测试

        关于压力测试,之前使用过siege――《第一次使用siege 第一次压力测试》

        今天再简单介绍一下ab:ab是Apache自带的压力测试工具。我们先来看一下版本:

    simaopig@simaopig-desktop:/usr/local/apache2/bin$ ./ab -V

         This is ApacheBench, Version 2.3 <$Revision: 655654 $>

         Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

         Licensed to The Apache Software Foundation, http://www.apache.org/

        其简单使用过程如下:

    simaopig@simaopig-desktop:/usr/local/apache2/bin$ ./ab -n1000 -c10 http://localhost/test.html

         This is ApacheBench, Version 2.3 <$Revision: 655654 $>

         Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

         Licensed to The Apache Software Foundation, http://www.apache.org/

        

         Benchmarking localhost (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:        Apache/2.2.15

         Server Hostname:        localhost

         Server Port:            80

        

         Document Path:          /test.html

         Document Length:        77 bytes

        

         Concurrency Level:      10

         Time taken for tests:   0.079 seconds

         Complete requests:      1000

         Failed requests:        0

         Write errors:           0

         Total transferred:      337000 bytes

         HTML transferred:       77000 bytes

         Requests per second:    12675.07 [#/sec] (mean)

         Time per request:       0.789 [ms] (mean)

         Time per request:       0.079 [ms] (mean, across all concurrent requests)

         Transfer rate:          4171.39 [Kbytes/sec] received

        

         Connection Times (ms)

                       min  mean[+/-sd] median   max

         Connect:        0    0   0.1      0       2

         Processing:     0    1   0.3      1       3

         Waiting:        0    1   0.3      1       3

         Total:          0    1   0.3      1       3

        

         Percentage of the requests served within a certain time (ms)

           50%      1

           66%      1

           75%      1

           80%      1

           90%      1

           95%      1

           98%      2

           99%      2

          100%      3 (longest request)

        ab的使用和返回的结果解释如下:

    使用选项 意义
    -n1000 表示总请求数为1000
    -c10 表示并发用户数为10,即同时有10个用户发起请求
    http://localhost/test.html 表示请求的目标URL
    -t10 请求的超时响应时间,单位为秒
    返回字段 字段意义
    Server Software 测试的服务器的Web 服务器软件名,这里是Apache/2.2.15
    Server Hostname 请求的URLK 主机部分名称, 这里值为localhost
    Server Port 被测试的Web 服务器的端口号
    Document Path 请求的URL中的根绝对路径
    Document Length 表示HTTP响应数据的正文长度
    Concurrency Level 表示并发用户数,这是我们压力测试时,传递过去的值 -c
    Time taken for tests 表示所有这些请求被处理完成所花费的总时间
    Complete requests 表示总请求数,我们压力测试时传递过去的参数 -n
    Failed requests 表示失败的请求数,这里的失败是指请求在连接服务器/发送数据/接收数据等环节发生异常,以及无响应后点击鼠标中时的情况。超时时间可以使用-t设置
    Total transferred 表示所有请求的响应数据长度总和,包含每个HTTP响应数据的头信息和正文数据的长度
    HTML transferred 表示所有请求的响应数据中正文数据的总和,也就是减去Total transferred中HTTP响应数据中头信息的长度
    Requests per second 这就是我们说滴吞吐率啊,等于 Complete requests / Time taken for tests 每秒钟,处理多少请求
    Time per request 这便是我们说的,用户平均请求等待时间,等于 Time taken for tests / (Complete requests / Concurrency Level)
    Time per request(across all concurrent requests) 这便是前面说的服务器平均请求处理时间,等于 Time taken for tests / Complete requests

         正是吞详细地址的倒数,为:Time per request / Concurrency Level 每个请求花费了多少秒

    Transfer rate 表示这些请求在单位时间内,从服务器获取的数据长度,等于:Total transferred / Time taken for tests

        

    Percentage of the requests served within a certain time (ms) 这部分数据用于描述每个请求处理时间的分页情况,比如在以上测试结果中,99%都不超过1毫秒,100%都不超过3毫秒。这个时间为处理时间,是指前面的Time per request,即对于单个用户而言,平均每个请求处理的时间
    QQ技术交流群:445447336,欢迎加入!
    扫一扫订阅我的微信号:IT技术博客大学习
    © 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

    京ICP备15002552号-1