zoukankan      html  css  js  c++  java
  • 高性能吞吐率的理解

    http://blog.csdn.net/xiahancslg/article/details/5613210

    http://blog.csdn.net/xiahancslg/article/category/689576

    何为吞吐率,解释下,就是在单位时间内服务器处理的请求数,这也许是我们衡量一个WEB站点很重要的一个指标,当10个用户同时发起100请求和1 个用户 同时向服务器发起1000个请求,我们的效果是不是一样呢,这里有个概念要说明一下,连续请求的意思是一个用户的请求通过服务器并返回进行下一次请求这个 过程成为连续的请求,当我们10个用户发起100个请求的时候,每个用户的请求都会阻塞在缓冲区内,等待下一个请求的返回,所以显然两种方式的操作对站点 的影响是完全不同的,下面我们利用APACHE自带的性能测试工具AB来测试我们的吞吐率,在linux环境下输入(自己打到自己APACHE的安装目录),
    xiahan@xiahan-desktop:/usr/ali/apache2/bin$  ab -n1000 -c10 http://cn.my.alibaba.com:12608/index.htm
    得到如下结果
    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 cn.my.alibaba.com (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.0.59
    Server Hostname:        cn.my.alibaba.com
    Server Port:            12608

    Document Path:          /index.htm
    Document Length:        0 bytes

    Concurrency Level:      10
    Time taken for tests:   8.636 seconds
    Complete requests:      1000
    Failed requests:        0
    Write errors:           0
    Non-2xx responses:      1000
    Total transferred:      1023000 bytes
    HTML transferred:       0 bytes
    Requests per second:    115.79 [#/sec] (mean)
    Time per request:       86.364 [ms] (mean)
    Time per request:       8.636 [ms] (mean, across all concurrent requests)
    Transfer rate:          115.68 [Kbytes/sec] received

    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    1   3.1      0      36
    Processing:     8   85 282.2     27    3242
    Waiting:        8   85 281.6     27    3242
    Total:          8   86 282.5     28    3242

    Percentage of the requests served within a certain time (ms)
      50%     28
      66%     49
      75%     64
      80%     77
      90%    132
      95%    289
      98%    513
      99%   1370
     100%   3242 (longest request)

    -n1000表示1000个请求,-c10表示10个用户,下面来解释下几个重要的结果指标
     Request per request:这就是我们重点关注的吞吐率,他等于 Complete requests/Time taken for tests
    Time per request:用户平均等待的时间,他等于Time taken for/(Complete requests/Concurrency Level)
    Time per request:(mean, across all concurrent requests)服务器平均处理请求的时间,他等于
    Time taken for /Complete requests
    这就是一些重要的指标
    当我们换成1个用户10个请求的时候,他的吞吐量会增加(由于篇幅原因就不打印出数据了),但是当我们为10个用户,10000个请求的时候吞吐率就会下 降,这说明了一个问题,当我们到达一个临界点的时候,是我们吞吐量最高的时候,当请求和用户数再增加的时候可能吞吐量就会下降,打个比方我们跑步的时候跑 20米一点不觉得累,跑30米也不会觉得累,当你跑到100米的时候感觉正好不累也不轻松,但是当你超过100米的时候,你就会感觉喘气,那100米就是 一个临界点,服务器处理的能力也类似于这个,但是光是我们掌握到最佳并发策略的web服务器的使用,我们就能应对各种各样的并发用户请求,答案显然不是。

  • 相关阅读:
    php数组到json的转变
    微信小程序获取微信绑定的手机号
    微信小程序授权登录
    用海豚框架(DolphinPHP)实现单/多图片上传时,如何获得图片路径
    数据库索引-简单了解
    php将二维数组转换成我想要的一维数组
    php的八大数据类型
    单例模式
    Springboot配置Sqlserver
    WinForm 文件操作
  • 原文地址:https://www.cnblogs.com/usual2013blog/p/2767145.html
Copyright © 2011-2022 走看看