欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Apache的壓力測(cè)試以及web性能優(yōu)化的常用知識(shí)總結(jié)

 更新時(shí)間:2015年12月21日 14:22:56   作者:紅心李  
這篇文章主要介紹了Apache的壓力測(cè)試以及web性能優(yōu)化的常用知識(shí)總結(jié),筆記由《構(gòu)建高性能web站點(diǎn)》這本高人氣書籍整理而來(lái),需要的朋友可以參考下

什么是帶寬?

誤解:“數(shù)據(jù)在線路中的移動(dòng)速度”、“數(shù)據(jù)的傳輸速度”

我們所說(shuō)的帶寬是指數(shù)據(jù)的發(fā)送速度,比如百兆網(wǎng)卡,指網(wǎng)卡的最大發(fā)送速度是100Mbps,也就是說(shuō)網(wǎng)卡在一秒鐘最多可以發(fā)送100Mb的數(shù)據(jù);相關(guān)的因素:

數(shù)據(jù)發(fā)送裝置將二進(jìn)制信號(hào)傳送到線路的能力,也稱信號(hào)傳輸頻率,以及另一端數(shù)據(jù)接收裝置對(duì)二進(jìn)制信號(hào)接收的能力,也包括線路對(duì)傳輸頻率的支持程度;
數(shù)據(jù)傳輸介質(zhì)的并行度,等價(jià)于計(jì)算機(jī)系統(tǒng)總線寬度的概念;
 

習(xí)慣與約定

b:比特單位 bit;

B:字節(jié)單位 Byte;

1KB = 1024B;

1kb = 1000b;

M與K 的換算同上;

 

什么是吞吐率?

吞吐率(Throughput),是指web服務(wù)器單位時(shí)間內(nèi)處理的請(qǐng)求數(shù),單位:reqs/s;

一般更關(guān)心的是服務(wù)器并發(fā)處理能力的上限 ,即最大吞吐率;

 

關(guān)于壓力測(cè)試

基于吞吐率壓力測(cè)試的幾個(gè)前提:

并發(fā)用戶數(shù);(某一時(shí)刻同時(shí)向服務(wù)器發(fā)送請(qǐng)求的用戶數(shù)量)
總請(qǐng)求數(shù);
請(qǐng)求資源描述;
 

幾個(gè)重要指標(biāo):

請(qǐng)求等待時(shí)間

用戶平均請(qǐng)求等待時(shí)間(主要衡量服務(wù)器在一定并發(fā)用戶數(shù)的情況下,對(duì)單個(gè)用戶的服務(wù)質(zhì)量)
服務(wù)器平均請(qǐng)求方護(hù)理時(shí)間(衡量服務(wù)器整體服務(wù)質(zhì)量)
壓力測(cè)試工具:Apache附帶的ab、LoadRunner、Jmeter

 

服務(wù)器系統(tǒng)負(fù)載

$ cat /proc/loadavg 
0.58 1.19 0.64 1/92 8306

這里0.58 1.19 0.64 這3個(gè)數(shù)字表示:系統(tǒng)最近1分鐘、5分鐘、15分鐘分別計(jì)算出來(lái)的系統(tǒng)負(fù)載;

1表示當(dāng)前運(yùn)行隊(duì)列中的進(jìn)程個(gè)數(shù);92表示此時(shí)的進(jìn)程總數(shù);8306表示到此時(shí)為止最后創(chuàng)建的一個(gè)進(jìn)程ID;

 

Apache  ab的使用介紹

在《構(gòu)建高性能web站點(diǎn)》中多處講到了用apache 自帶的壓力測(cè)試工具ab進(jìn)行Server的性能測(cè)試,搜索了一下相關(guān)知識(shí),整理如下:

ab的全稱是ApacheBench,是 Apache 附帶的一個(gè)小工具,專門用于 HTTP Server 的benchmark testing,可以同時(shí)模擬多個(gè)并發(fā)請(qǐng)求。下面以一個(gè)實(shí)際例子來(lái)介紹ab的使用:

[xiekeli@localhost ~]$ ab -n 1000 -c 50 http://www.abc.com/a.php        

 //產(chǎn)生1000次http請(qǐng)求,每次的并發(fā)用戶數(shù):50

This is ApacheBench, Version 2.0.40-dev <;$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
 
Benchmarking www.abc.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
Finished 1000 requests
 
 
Server Software: Apache                     //被測(cè)平臺(tái)Apache 

Server Hostname: www.abc.com                   //服務(wù)器主機(jī)名
Server Port: 80
 
Document Path: /a.php
Document Length: 231 bytes                   //文檔大小
 
Concurrency Level: 50                       //并發(fā)數(shù)
Time taken for tests: 12.818547 seconds
Complete requests: 1000                      //完成請(qǐng)求數(shù)
Failed requests: 0                       //失敗的請(qǐng)求數(shù)
Write errors: 0
Non-2xx responses: 1001
Total transferred: 438438 bytes                  //整個(gè)場(chǎng)景中的網(wǎng)絡(luò)傳輸量
HTML transferred: 231231 bytes                  //整個(gè)場(chǎng)景中的HTML內(nèi)容傳輸量
Requests per second: 78.01 [#/sec] (mean)       //吞吐率,即每秒處理的請(qǐng)求數(shù)(后面括號(hào)中的 mean 表示這是一個(gè)平均值)
Time per request: 640.927 [ms] (mean)          //每次請(qǐng)求的響應(yīng)時(shí)間(后面括號(hào)中的 mean 表示這是一個(gè)平均值

Time per request: 12.819 [ms] (mean, across all concurrent requests)    //每次請(qǐng)求的響應(yīng)時(shí)間(后面括號(hào)中已經(jīng)說(shuō)明,是按所有并發(fā)數(shù)計(jì)算的平均值)

Transfer rate: 33.39 [Kbytes/sec] received  //平均每秒網(wǎng)絡(luò)上的流量,可以幫助排除是否存在網(wǎng)絡(luò)流量過(guò)大導(dǎo)致響應(yīng)時(shí)間延長(zhǎng)的問(wèn)題 
Connection Times (ms)           //網(wǎng)絡(luò)上消耗的時(shí)間的分解,各項(xiàng)數(shù)據(jù)的具體算法還不是很清楚 

min mean[+/-sd] median max
Connect: 186 307 598.1 212 9188
Processing: 188 271 289.6 214 1923
Waiting: 188 245 219.9 213 1416
Total: 376 579 660.2 427 9380
 //整個(gè)場(chǎng)景中所有請(qǐng)求的響應(yīng)情況。在場(chǎng)景中每個(gè)請(qǐng)求都有一個(gè)響應(yīng)時(shí)間,其中50%的用戶響應(yīng)時(shí)間小于1093 毫秒,60% 的用戶響應(yīng)時(shí)間小于1247 毫秒,最大的響應(yīng)時(shí)間小于7785 毫秒,由于對(duì)于并發(fā)請(qǐng)求,cpu實(shí)際上并不是同時(shí)處理的,而是按照每個(gè)請(qǐng)求獲得的時(shí)間片逐個(gè)輪轉(zhuǎn)處理的,所以基本上第一個(gè)Time per request時(shí)間約等于第二個(gè)Time per request時(shí)間乘以并發(fā)請(qǐng)求數(shù)

Percentage of the requests served within a certain time (ms) 
50% 427
66% 430
75% 431
80% 433
90% 451
95% 1630
98% 3382
99% 3429
100% 9380 (longest request)

-n : 表示的測(cè)試的次數(shù),很多地方翻譯成“發(fā)送請(qǐng)求的次數(shù)”,這樣很容易產(chǎn)生歧義,應(yīng)該叫:“http請(qǐng)求數(shù)”比價(jià)合適;這里表示1000次http請(qǐng)求;
-c : 表示每次的請(qǐng)求數(shù),-c 50表示一次同時(shí)發(fā)起50個(gè)http請(qǐng)求,50次請(qǐng)求都收到響應(yīng)了之后,再次發(fā)送50個(gè)http請(qǐng)求,直到發(fā)滿1000次。

web優(yōu)化的其他一些相關(guān)知識(shí)點(diǎn):
緩存(cache)和緩沖(buffer)的區(qū)別:

緩存 (cache):緩存的目的是把需要花費(fèi)昂貴開銷的計(jì)算結(jié)果保存起來(lái),在以后需要的時(shí)候直接取出,避免重復(fù)的計(jì)算。

緩沖 (buffer):目的在于改善各部件之間因?yàn)樗俣炔煌l(fā)的問(wèn)題。起到將快速設(shè)備與慢速設(shè)備平滑銜接的作用。

頁(yè)面緩存(Page Cache)

頁(yè)面緩存就是將動(dòng)態(tài)計(jì)算的結(jié)果進(jìn)行緩存,避免動(dòng)態(tài)內(nèi)容不必要的重復(fù)計(jì)算,主要是針對(duì)動(dòng)態(tài)生成的html頁(yè)面和動(dòng)態(tài)圖片或動(dòng)態(tài)XML數(shù)據(jù)等;

緩存持久化和搜索

    如果緩存文件非常多,cache目錄下會(huì)擁擠大量的文件,如果緩存的文件的讀寫頻度比較高,對(duì)CPU的影響是非常大的;

解決的方案:

      1、使用支持目錄hash加速目錄遍歷的文件系統(tǒng)來(lái)緩解這種情況,如:XFS和reiserfs;

      2、緩存目錄分級(jí)

過(guò)期檢查

  •   緩存過(guò)期時(shí)間
  •     緩存有效期長(zhǎng)度

把緩存放到內(nèi)存中

如果將緩存數(shù)據(jù)放到磁盤文件中,每次緩存加載和過(guò)期檢查都在磁盤I/O的開銷,如果磁盤同時(shí)還運(yùn)行著如數(shù)據(jù)庫(kù)這樣的I/O密集型應(yīng)用,那么緩存文件的I/O操作便會(huì)存在一定的延遲。

作者在這里提到了兩個(gè)PHP的緩存框架:APC和XCache。

 

緩存服務(wù)器

將HTML緩存在一臺(tái)獨(dú)立的緩存服務(wù)器中,利用memcached,可以很容易的通過(guò)TCP將緩存存儲(chǔ)在其他的服務(wù)器中,memcached同樣也是用內(nèi)存空間保存緩存數(shù)據(jù)的,可以減少不必要的I/O。memcached對(duì)每一個(gè)key都維護(hù)一個(gè)過(guò)期時(shí)間,一旦過(guò)期,會(huì)自動(dòng)刪除這個(gè)key。

 

局部無(wú)緩存

局部無(wú)緩存允許在頁(yè)面中指定一塊包含動(dòng)態(tài)數(shù)據(jù)的HTML代碼段,每次這些動(dòng)態(tài)數(shù)據(jù)都需要實(shí)時(shí)計(jì)算,然后和其余的緩存合成為最終的網(wǎng)頁(yè)。

 

靜態(tài)化內(nèi)容

    動(dòng)態(tài)內(nèi)容緩存中,每次用戶的請(qǐng)求都要送到動(dòng)態(tài)程序,動(dòng)態(tài)程序根據(jù)緩存的有效期決定是否輸出緩存。因此這種控制權(quán)的代價(jià)也是比較昂貴的。

    將動(dòng)態(tài)頁(yè)面×××.php的緩存從cache目錄拿出來(lái),放到同一個(gè)目錄中:×××.html,直接通過(guò)瀏覽器訪問(wèn)對(duì)應(yīng)靜態(tài)頁(yè)面。

    當(dāng)然靜態(tài)化頁(yè)面也是需要?jiǎng)討B(tài)程序來(lái)實(shí)現(xiàn)的,一般靜態(tài)化頁(yè)面的管理都是通過(guò)CMS(內(nèi)容管理系統(tǒng))來(lái)進(jìn)行管理的。

    靜態(tài)化頁(yè)面的更新策略:

    1、在數(shù)據(jù)更新時(shí),重新生成靜態(tài)化內(nèi)容;

    2、定時(shí)重新生成靜態(tài)化內(nèi)容;

 

局部靜態(tài)化

靜態(tài)化頁(yè)面可以通過(guò)SSI(服務(wù)器端包含)技術(shù)實(shí)現(xiàn)各個(gè)局部頁(yè)面的獨(dú)立更新。

SSI技術(shù)可以在任何一個(gè)主流web服務(wù)器中找到相應(yīng)的模塊,如Apache的mod_include和Lighttpd的mod_ssi。

名詞解釋:PV

PV (page view) 即頁(yè)面瀏覽量,或點(diǎn)擊量,通常是衡量一個(gè) 網(wǎng)絡(luò)新聞 頻道或網(wǎng)站甚至一條網(wǎng)絡(luò)新聞的主要指標(biāo)。

定義:一個(gè)訪問(wèn)者在24小時(shí)(0點(diǎn)到24點(diǎn))內(nèi)到底看了你網(wǎng)站幾個(gè)頁(yè)面。需要注意的是:同一個(gè)人瀏覽你網(wǎng)站同一個(gè)頁(yè)面,不重復(fù)計(jì)算pv量。pv就是一個(gè)訪問(wèn)者打開了你網(wǎng)站的幾個(gè)頁(yè)面。

pv的計(jì)算:當(dāng)一個(gè)訪問(wèn)者訪問(wèn)的時(shí)候,記錄他所訪問(wèn)的頁(yè)面和對(duì)應(yīng)的IP,然后確定這個(gè)IP今天訪問(wèn)了這個(gè)頁(yè)面沒有。如果你的網(wǎng)站到了23點(diǎn),單純IP有60萬(wàn)條的話,每個(gè)訪問(wèn)者平均訪問(wèn)了3個(gè)頁(yè)面,那么pv表的記錄就要有180萬(wàn)條。

相關(guān)文章

最新評(píng)論