zoukankan      html  css  js  c++  java
  • 服务器负载计算

    1.概念

      网站流量是指网站的访问量,用来描述访问网站的用户数量以及用户所浏览的网页数量等指标,常用的统计指标包括网站的独立用户数量、总用户数量(含重复访问者)、网页浏览数量、每个用户的页面浏览数量、用户在网站的平均停留时间等。

      网站访问量的常用衡量标准:独立访客(UV) 和 综合浏览量(PV),一般以日为单位来衡量和计算。

      • 独立访客(UV):指一定时间范围内相同访客多次访问网站,只计算为1个独立访客。
      • 综合浏览量(PV):指一定时间范围内页面浏览量或点击量,用户每次刷新即被计算一次。

     

    2.带宽计算

    • PV计算带宽

    计算带宽大小需要关注两个指标:峰值流量页面的平均大小

    假设网站的平均日PV:10w 的访问量,页面平均大小0.4 M 。

    网站带宽 = 10w / (24 *60 * 60)* 0.4M * 8 =3.7 Mbps

    具体的计算公式是:网站带宽= PV / 统计时间(换算到S)*平均页面大小(单位KB)* 8

    在实际的网站运行过程中,我们的网站必须要在峰值流量时保持正常的访问,假设,峰值流量是平均流量的5倍,按照这个计算,实际需要的带宽大约在 3.7 Mbps * 5=18.5 Mbps 。

     

    PS

    1. 字节的单位是Byte,而带宽的单位是bit,1Byte=8bit,所以转换为带宽的时候,要乘以 8。

    2. 在实际运行中,由于缓存、CDN、白天夜里访问量不同等原因,这个是绝对情况下的算法。

     

    3.并发计算

    3.1 PV计算并发

      具体的计算公式是:并发连接数 = PV / 统计时间 * 页面衍生连接次数 * http响应时间 * 因数 / web服务器数量;

     

      解释:

      页面衍生连接次数: 一个页面请求,会有好几次http连接,如外部的css, js,图片等,这个根据实际情况而定。

      http响应时间: 平均一个http请求的响应时间,可以使用1秒或更少。

      因数: 峰值流量 和平均流量的倍数,一般使用5 ,最好根据实际情况计算后得出。

     

      例子:

      10PV的并发连接数: (100000PV / 86400秒 * 50个派生连接数 * 1秒内响应 * 5倍峰值) / 1台Web服务器 = 289 并发连接数

      所以,如果我们能够测试出单机的并发连接数,和 日pv 数,那么我们同样也能估算出需要web的服务器数量。还有一套通过单机 QPS计算 pv 和 需要的web服务器数量的方法,目前一些公司采用这种计算方法,但是其实计算的原理都是差不多的。

     

    3.2 单机QPS计算PV(最好使用以下方式来计算)

      QPS = 总请求数 / ( 进程总数 *   请求时间 ) 

      QPS: 单个进程每秒请求服务器的成功次数 

     

      单台服务器每天PV计算

      公式1:每天总PV = QPS * 3600 * 6 

      公式2:每天总PV = QPS * 3600 * 8 

     

      服务器计算

      服务器数量 =  ( 每天总PV / 单台服务器每天总PV ) 

     

      峰值QPS和机器计算公式

      原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间

      公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)

      机器:峰值时间每秒QPS / 单台机器的QPS   = 需要的机器

      例子:每天300w PV 的在单台机器上,这台机器需要多少QPS?

      ( 3000000 * 0.8 ) / (86400 *0.2 ) = 139 (QPS)

     

    4.http_load使用

      安装方式省略

    参数

    全称

    含义

    -p

    -parallel

    并发的用户进程数。

    -f

    -fetches

    总计的访问次数

    -r

    -rate

    含义是每秒的访问频率

    -s

    -seconds

    连续的访问时间

    url

     

    网站连接地址或url文件

      以下是实际测试结果

    [root@Zabbix http_load]# ./http_load -p 500  -s 5 urls
    SSH执行以上命令,则向www.juntech.net并发500个线程,时间为连续5秒
     
    [root@Zabbix http_load]# ./http_load -p 500  -s 5 urls 
    7679 fetches, 500 max parallel, 0 bytes, in 5.00006 seconds
    0 mean bytes/connection
    1535.78 fetches/sec, 0 bytes/sec
    msecs/connect: 106.311 mean, 4378.61 max, 3.189 min
    msecs/first-response: 87.9406 mean, 3330.81 max, 3.119 min
    HTTP response codes:
      code 302 – 7679

      接下来查看一下参数解释

    41 fetches, 1020 max parallel, 851898 bytes, in 10.0008 seconds
    # 一共请求连接41次,最大并发线程1020个,持续10.0008秒内,总传输速率为 851898bytes 
    20778 mean bytes/connection
    #每次请求连接平均数据量(851898÷41)
    4.09969 fetches/sec, 85183.3 bytes/sec
    #每秒的响应请求连接数为4.09969个,每秒传输的数据为85183.3btyes/毫秒
    msecs/connect: 264.607 mean, 269.482 max, 262.187 min
    #每次连接平均响应时间:264.607毫秒,最大时间:269.482毫秒,最小时间:262.187毫秒
    msecs/first-response: 1949.27 mean, 5394.21 max, 380.501 min
    #每次连接平均返回时间:1949.27毫秒,最大时间:5394.21毫秒,最小时间:380.501毫秒
    HTTP response codes:
    
    code 200 -- 41
    #HTTP返回码:200 ,一共41次。

      QPS前文提到过 =并发数/平均响应时间,那么就等于  41 /  10 = 4

      测试结果中,主要参考fetches/sec、msecs/connect数值,即服务器每秒能够响应的查询次数的数值来衡量性能,当然,单纯数值判断并不准确,还要参考CPU、内存的等消耗综合考虑。

     

      下面为测试的2种方式,使用进程和每秒访问频率,但是最后一般是最大进程还是每秒访问频率,并发高了之后,QPS的值都差不多,而且,每秒访问的频率是开多少进程限制的,如果每秒访问-r 1000,而进程限制 –p 5,那么是跑不到每秒1000的.

    #测试网站每秒能承受的平均访问量
    $ http_load -p 100 -f 10000 urls.txt
    $ http_load -p 100 -s 10 url.txt
     
    #测试网站是否能承受住预期的访问压力
    $ http_load -rate 200 -seconds 10 url.txt
     

    作者:小家电维修

    相见有时,后会无期。

  • 相关阅读:
    leetcode—Swap Nodes in Pairs
    leetcode--Merge k Sorted Lists
    leetcode—Valid Parentheses
    leetcode—3sum
    编程工具(保持更新)
    QT下调用摄像头(opencv2.4.4)
    qtcreator 与 opencv
    在线公式编辑器
    QT学习(对话框)codeblock版本
    QT-opencv小结
  • 原文地址:https://www.cnblogs.com/lizexiong/p/14648756.html
Copyright © 2011-2022 走看看