使用ab進行對頁面壓力測試
ab是apache自帶的一個很好用的壓力測試工具,當安裝完apache的時候,就可以在bin下面找到ab
我們可以模拟100個并發使用者,對一個頁面發送1000個請求
#ab -c 100 -n 1000 http://192.168.0.2/phpmyadmin
請求總數1000次,每次并發100
##首先是apache的版本資訊
This is ApacheBench, Version 2.3 <$Revision: 1554214 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.0.2 (be patient)
Server Software: Apache/2.4.9 //版本号
Server Hostname: 192.168.0.2 //請求的主機
Server Port: 80 //通路的端口
Document Path: /phpmyadmin //網站的存放的路徑
Document Length: 208 bytes //頁面長度
Concurrency Level: 100 //并發100
Time taken for tests: 0.543 seconds //使用的的時間
Complete requests: 1000 //請求的總數
Failed requests: 0 //失敗請求
Non-2xx responses: 1000
Total transferred: 396000 bytes //總共傳輸位元組數,包含http的頭資訊等
HTML transferred: 208000 bytes //html位元組數,實際的頁面傳遞位元組數
Requests per second: 1842.10 [#/sec] (mean) //每秒多少請求,這個是非常重要的參數數值,伺服器的吞吐量
Time per request: 54.286 [ms] (mean) //使用者平均請求等待時間
Time per request: 0.543 [ms] (mean, across all concurrent requests) //伺服器平均處理時間,也就是伺服器吞吐量的倒數
Transfer rate: 712.37 [Kbytes/sec] received //每秒擷取的資料長度
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 18 11.4 13 68
Processing: 3 35 73.8 14 449
Waiting: 0 31 73.9 11 446
Total: 15 53 77.0 27 466
Percentage of the requests served within a certain time (ms)
50% 27 //50%的請求在27ms内傳回
66% 40
75% 45
80% 53
90% 80
95% 183
98% 357
99% 463
100% 466 (longest request)
這裡我配置了一個httpd+php+mysql的環境,裝了一個phpmyadmin,然後對網頁進行壓力測試,如果大家要是測試的話就要從小的并發量開始測,我就是閑着沒事幹,弄了個總量5000,并發500的,結果就悲劇了,伺服器直接卡死,網頁重新整理刷不出來,被迫關機。造成這種局面的根本所在就是,伺服器的配置無法對大量的并發請求及時響應,如果有很多人通路這個網站,那麼打開的速度就很慢,對客戶的感官造成了影響。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauIDOzAjW2d0RKRXSEFUQft0Y1M1RZN1NQFDTvl2S39CXwgzLcdDNvwlMw00LcJDMzZWe39CXt92Yu8GdjFTNuMzcvw1LcpDc0RHaiojIsJye.jpg)
PHP加速器
為了提高伺服器的通路量我們可以配置php加速器Xcache,用緩存來提高頁面的通路速度
Xcache是開源的opcode和var的緩存器,它可以加速PHP的原因就是Xcache通過緩存使用者已經請求的PHP編譯結果,将PHP編譯緩存儲存在伺服器的記憶體中以便使用者再次請求同樣PHP解析時不再用PHP再次編譯直接從Xcache緩存結果中讀取。避免PHP再次編譯給伺服器帶來過大的負載。
編譯Xcache
編譯安裝的時候,xcache是作為php的子產品來使用的,編譯的時候要指明php config的路徑
# /usr/local/php/bin/phpize在編譯之前,要用這個指令來生成configure檔案,因為,解壓之後的檔案裡沒有configure檔案,是以,要用這個指令來生成configure檔案。再執行編譯
來看一下phpize的幫助文檔
#man -M /usr/local/php/php/man/ phpize
因為上一次編譯php的時候沒有加入man手冊,是以在這裡必須使用man –M,提示說準備一個php擴充來實作編譯
#tar xf xcache-3.1.0.tar.gz
#cd xcache-3.1.0
#/usr/local/php/bin/phpize
#./configure --enable-xcache --with-phpconfig=/usr/local/php/bin/php-config
#make && make install
建立一個目錄,把xcache.ini複制到建立的目錄中
#mkdir /etc/php.d
#cp xcache.ini /etc/php.d
接下來編輯/etc/php.d/xcache.ini,找到extension開頭的行,修改為如下行:
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
檢視php顯示界面裡是否有xcache
這就說明Xcache已經添加進php中了
現在再來測試一下,看看通路速度有何改變
看着這個結果可以跟上面測試的對比一下,可以明顯體驗到php加速器的重要性。
伺服器狀态
mod_status子產品可以讓管理者檢視伺服器的執行狀态,它通過一個HTML頁面展示了目前伺服器的統計資料。這些資料通常包括但不限于:
1.處于工作狀态的worker程序數;
2.空閑狀态的worker程序數;
3.每個worker的狀态,包括此worker已經響應的請求數,及由此worker發送的内容的位元組數;
4.目前伺服器總共發送的位元組數;
5.伺服器自上次啟動或重新開機以來至目前的時長;
6.平均每秒鐘響應的請求數、平均每秒鐘發送的位元組數、平均每個請求所請求内容的位元組數;
啟用狀态頁面的方法很簡單,隻需要在主配置檔案中添加如下内容即可:
<Location /status>
SetHandler server-status
Require all granted
</Location>