Apache實現網站性能壓力測試
壓力測試是性能調優過程中必不可少的一環。只有讓服務器處在高壓情況下才能真正體現出各種設置所暴露的問題。
性能測試工具目前最常見的有以下幾種:ab、http_load、webbench、siege。
ab的原理
??ab命令會創建多個並發訪問線程,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、、tomcat、IIS等其它Web服務器的壓力。
??ab命令對發出負載的計算機要求很低,它既不會占用很高CPU,也不會占用很多內存。但卻會給目標服務器造成巨大的負載,其原理類似CC×××。自己測試使用也需要註意,否則一次上太多的負載。可能造成目標服務器資源耗完,嚴重時甚至導致死機。
實驗環境
- 系統環境:centos6.5
- 服務器IP地址:192.168.100.103
- yum掛載目錄:/mnt/sr0
- 相關源碼包下載地址:百度雲下載 ??密碼:pko3
搭建步驟
一、準備工作
1、關閉防火墻及selinux
[root@Init5 ~]# chkconfig iptables off #隨開機關閉iptables
[root@Init5 ~]# vim /etc/sysconfig/selinux
[root@Init5 ~]# reboot #重啟生效
2、卸載以RPM方式安裝httpd相關包
[root@Init5 ~]# rpm -qa | grep "httpd"
[root@Init5 ~]# yum remove httpd #卸載httpd相關包
3、搭建DNS服務器
如果沒有搭建以上兩個服務的朋友,請查看我的其他帖子有詳細介紹
http://blog.51cto.com/11905606/2156944
二、搭建httpd服務
1、安裝gcc、gcc-c++、make、arp、arp-util、pcre等工具包
[root@localhost ~]# yum -y install gcc gcc-c++ make zlib-devel #安裝C語言編譯器以及make
[root@localhost ~]# tar -zxvf apr-1.4.6.tar.gz -C /usr/src/
[root@localhost apr-1.4.6]# ./configure prefix=/usr/local/apr && make && make install
[root@localhost ~]# tar -zxvf apr-util-1.4.1.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/apr-util-1.4.1/
[root@localhost apr-util-1.4.1]# ./configure prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
[root@localhost ~]# tar -zxvf pcre-8.10.tar.gz -C /usr/src #支持正則
[root@localhost ~]# cd /usr/src/pcre-8.10/
[root@localhost pcre-8.10]# ./configure prefix=/usr/local/pcre && make && make install
2、配置編譯安裝apache
[root@Init5 ~]# tar zxvf httpd-2.4.2.tar.gz -C /usr/src/
[root@Init5 ~]# cd /usr/src/httpd-2.4.2/
[root@Init5 httpd-2.4.2]# ./configure \
--prefix=/usr/local/httpd \
--with-apr=/usr/local/apr \
--with-pcre=/usr/local/pcre \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
參數解析:
prefix:指定安裝目錄
enable-deflate:啟用mod_deflate模塊
enable-so:啟用動態加載模塊支持,需要什麽功能可以動態加載
enable-rewrite:啟用網頁地址重寫功能,實現偽靜態
enable-charset-lite:默認字符集
enable-cgid:啟用CGID
[root@Init5 httpd-2.4.2]# make && make install #編譯及編譯安裝
3、添加系統服務
[root@Init5 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@Init5 ~]# vim /etc/init.d/httpd
第2、3兩行添加以下參數:
# chkconfig:2345 85 15
# description:Apache is a World Wide Web server.
[root@Init5 init.d]# chmod +x /etc/init.d/httpd
[root@Init5 init.d]# chkconfig --add httpd
4、建立軟鏈接,方便管理
[root@Init5 ~]# mkdir -p /etc/httpd
[root@Init5 ~]# ln -s /usr/local/httpd/conf/ /etc/httpd/ #優化配置文件路徑
[root@Init5 ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #優化命令路徑
5、修改配置文件
[root@Init5 ~]# vim /etc/httpd/conf/httpd.conf
修改以下參數:
ServerName www.bt.com:80 #填寫完全主機名
Listen 192.168.100.103:80 #監聽本地IP
6、啟動httpd服務
[root@Init5 ~]# service httpd start
[root@Init5 ~]# netstat -anpt | grep ‘:80‘
二、配置Apache實現網頁壓縮
1、編輯默認首頁
[root@Init5 ~]# cp qingzi.jpg /usr/local/httpd/htdocs/ #將圖片拷貝到站點目錄中
[root@Init5 ~]# cd /usr/local/httpd/htdocs/
[root@Init5 htdocs]# vim index.html
<html>
??<body>
????<h1>It works!</h1>
????<img src=‘qingzi.jpg‘ /> #首頁添加圖片
??</body>
</html>
2、修改主配置文件
[root@Init5 ~]# vim /etc/httpd/conf/httpd.conf
102行左右,開啟deflate模塊
LoadModule deflate_module modules/mod_deflate.so
最末尾添加如下參數:
<IfModule deflate_module>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript #對html、css等內容啟用gzip壓縮
DeflateCompressionLevel 9 #壓縮級別是9,高級別壓縮,級別越高,壓縮越小
SetoutputFilter DEFLATE #啟用deflate模塊對本站點的輸出進行gzip壓縮
</IfModule>
3、檢查是否安裝了mod_deflate模塊
[root@Init5 ~]# apachectl -t -D DUMP_MODULES | grep ‘deflate‘
[root@Init5 ~]# /etc/init.d/httpd restart #重啟httpd服務
4、使用fiddler抓包查看
三、使用ab工具進行壓力測試
[root@Init5 ~]# cd /usr/local/httpd/bin/
[root@Init5 bin]# ll
1、進行壓力測試
[root@Init5 ~]# ab -n3000 -c1000 www.bt.com/index.html
-n:請求數總和,也就是request請求的總數,訪問數量
-c:並發用戶數,並發鏈接數量
2、關閉網頁壓縮功能
[root@Init5 ~]# vim /etc/httpd/conf/httpd.conf
[root@Init5 ~]# /etc/init.d/httpd restart #重新啟動服務
3、再次進行壓力測試
[root@Init5 ~]# ab -n3000 -c1000 www.bt.com/index.html
Apache實現網站性能壓力測試