建站服務(wù)器
這篇文章主要介紹了apache的壓力測(cè)試以及web性能優(yōu)化的常用知識(shí)總結(jié),筆記由《構(gòu)建高性能web站點(diǎn)》這本高人氣書籍整理而來,需要的朋友可以參考下
什么是帶寬?
誤解:“數(shù)據(jù)在線路中的移動(dòng)速度”、“數(shù)據(jù)的傳輸速度”
我們所說的帶寬是指數(shù)據(jù)的發(fā)送速度,比如百兆網(wǎng)卡,指網(wǎng)卡的最大fa送速度是100mbps,也就是說網(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ì)算出來的系統(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://www.bbqmw.net/專門用于 http server 的benchmark testing,可以同時(shí)模擬多個(gè)并發(fā)請(qǐng)求。下面以一個(gè)實(shí)際例子來介紹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.0copyright 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 requestscompleted 200 requestscompleted 300 requestscompleted 400 requestscompleted 500 requestscompleted 600 requestscompleted 700 requestscompleted 800 requestscompleted 900 requestsfinished 1000 requests server software: apache //被測(cè)平臺(tái)apache server hostname: www.abc.com //服務(wù)器主機(jī)名server port: 80 document path: /a.phpdocument length: 231 bytes //文檔大小 concurrency level: 50 //并發(fā)數(shù)time taken for tests: 12.818547 secondscomplete requests: 1000 //完成請(qǐng)求數(shù)failed requests: 0 //失敗的請(qǐng)求數(shù)write errors: 0non-2xx responses: 1001total 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)說明,是按所有并發(fā)數(shù)計(jì)算的平均值)transfer rate: 33.39 [kbytes/sec] received //平均每秒網(wǎng)絡(luò)上的流量,可以幫助排除是否存在網(wǎng)絡(luò)流量過大導(dǎo)致響應(yīng)時(shí)間延長的問題 connection times (ms) //網(wǎng)絡(luò)上消耗的時(shí)間的分解,各項(xiàng)數(shù)據(jù)的具體算法還不是很清楚 min mean[ /-sd] median maxconnect: 186 307 598.1 212 9188processing: 188 271 289.6 214 1923waiting: 188 245 219.9 213 1416total: 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% 42766% 43075% 43180% 43390% 45195% 163098% 338299% 3429100% 9380 (longest request)