1. 程式人生 > >Apache優化

Apache優化

10.10 event 線程處理 客戶 好的 編譯安裝 install httpd2 system32

優化:根據用戶訪問量(UV、PV)及其它綜合考慮,調整系統及軟件的參數,將服務器性能最大化利用

並發:同一時刻網站的訪問量

用戶瀏覽量UV(Unique Visitor):既獨立訪客,訪問您的網站的上網電腦數量(以cookie為依據)。(單用戶刷新算一次)

頁面瀏覽量PV(PageView):當天網站的訪問量(單用戶刷新算多次)。此指標衡量網站訪問量情況。

一、Apache調優


(1)調研(如apache需調研用戶訪問量、需要調整的內容、防盜鏈等)

(2)實施優化(優化未上線服務器,提升服務器性能和並發量)

(3)測試性能

ab <-nN總連接數> <-cN並發數> <網站(如:www.baidu.com/index.html)>    //測試服務器訪問性能

選項:
-k:使用HTTP連接保持
-c:請求的進程數
-n:請求的線程數
(4)上線

準備域名、公網IP→服務器→部署服務(Apache) → 網頁文件

(5)DNAT(服務器內網IP:80映射公網IP:80)

www.hiahia.com:80 --> 服務器公網IP:80(23.12.45.11:80) --> 服務器內網IP:80(192.168.1.10:80)

二、Apache工作模式


1.perfork


(1)沒有線程概念,是多進程模型,一個進程處理一個連接,穩定、快;當連接數大時消耗大量內存

(2)優化

vim /usr/local/httpd/conf/httpd.conf

<ifModule mpm_prefork_module>
    ServerLimit 40          //最大開啟的進程數
    StartServers 2          //服務器啟動時建立的子進程數
    Maxclients 1000         //允許同時接入最大請求數量(最大線程數量)
    MinSpareThreads 5           //空閑進程最小數量
    ThreadsPerChild 150     //進程建立的子進程常駐數
    MaxRequestPerChild 1000     //每個子進程在存活期間允許的最大請求數量
</ifModule>

2.worker


(1)多進程、多線程,一個進程多個線程,一個線程處理一個連接;與perfork更省內存,與php等有兼容問題
(2)優化
vim /usr/local/httpd/conf/httpd.conf

<ifModule mpm_worker_module>
    ServerLimit 40          //最大開啟的進程數
    ThreadLimit 200         //每個進程最大開啟的線程數
    StartServers 2          //服務器啟動時建立的子進程數
    Maxclients 1000         //允許同時接入最大請求數量(最大線程數量)
    MaxSpareThreads 100     //空閑線程最大數量
    MinSpareThreads 5           //空閑線程最小數量
    ThreadsPerChild 150     //每個子進程建立的常駐線程數
    MaxRequestPerChild 1000     //每個子進程在存活期間允許的最大請求數量   
</ifModule>

3.event


worker增強版,提供更好的並發負載能力,不能很好與https支持

vim /usr/local/httpd/conf/httpd.conf

<IfModule mpm_event_module>
    StartServers             3
    MinSpareThreads         75
    MaxSpareThreads        250
    ThreadsPerChild         25
    MaxRequestWorkers      400
    MaxConnectionsPerChild   0
</IfModule>

4.查看當前工作模式:httpd -V

三、Apache其余優化方式


1.網頁壓縮


a.查詢是否安裝mod_deflate模塊
b.修改配置文件啟動模塊
c.測試

(1)判斷是否支持mod_deflate模塊

apachectl -t -D DUMP_MODULES        //查看是否deflate_module

//也可以使用apachectl -l查看安裝的所有模塊

(2)重新編譯安裝支持模塊

a.httpd-2.2.x

cd httpd-2.2.17/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate
make && make install

b.httpd-2.4.x

cd httpd-2.4.34/    //進入解壓目錄
yum -y install zlib-devel    //yum安裝zlib-devel包
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre **--enable-deflate**    //配置安裝壓縮模塊
make && make install    //編譯並安裝

(3)修改配置文件啟動模塊支持

a.httpd-2.2.x

vim /usr/local/httpd/conf/httpd.conf

AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript        //指定需要壓縮的文件格式
DeflateCompressionLevel 9                               //指定壓縮的等級
SetOutputFilter DEFLATE                             //對所有輸出啟用壓縮

b.httpd-2.4.x

vim /usr/local/httpd/conf/httpd.conf

105 LoadModule deflate_module modules/mod_deflate.so                    //加載deflate模塊

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript        //指定需要壓縮的文件格式
DeflateCompressionLevel 9                               //指定壓縮的等級
SetOutputFilter DEFLATE                             //對所有輸出啟用壓縮
</IfModule>

(4)驗證

/etc/init.d/httpd restart    //重啟httpd服務

技術分享圖片
註:httpd1.x和2.x都使用gzip壓縮算法

2.網頁緩存


a.查詢是否安裝mod_expire模塊
b.修改配置文件啟動模塊
c.測試

(1)判斷是否支持mod_expire模塊

apachectl -t -D DUMP_MODULES        //查看是否expire_module

(2)重新編譯安裝支持模塊

a.httpd-2.2.x

cd httpd-2.2.17/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate --enable-expires 
make && make install

b.httpd-2.4.x

cd httpd-2.4.34/
yum -y install zlib-devel
./configure --prefix=/usr/local/httpd/ --enable-so --enable-charset-lite --enable-rewrite --enable-cgi --enable-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre **--enable-expires**    //配置添加緩存模塊
make && make install    //編譯並安裝

(3)修改配置文件啟動模塊支持

a.httpd-2.2.x

vim /usr/local/httpd/conf/httpd.conf

<ifModule mod_expires.c>
  ExpiresActive On                  //開啟expires模塊
  ExpiresDefault "access plus 60 seconds"       //緩存60秒
</ifModule>

b.httpd-2.4.x

vim /usr/local/httpd/conf/httpd.conf

111 LoadModule expires_module modules/mod_expires.so

<ifModule mod_expires.c>
  ExpiresActive On                  //開啟expires模塊
  ExpiresDefault "access plus 60 seconds"       //緩存60秒
</ifModule>

(4)驗證

/etc/init.d/httpd restart               //Expires:Sun, 04 Mar 2018 02:58:59 GMT

技術分享圖片

3.防盜鏈


a.查詢是否安裝mod_rewrite模塊
b.修改配置文件啟動模塊
c.測試

(1)判斷是否支持mod_rewrite模塊

apachectl -t -D DUMP_MODULES        //查看是否rewrite_module

(2)修改配置文件啟動模塊支持

註:httpd2.2.x這裏與httpd2.4.x寫法一樣

vim /usr/local/httpd/conf/httpd.conf

httpd-2.4

159 LoadModule rewrite_module modules/mod_rewrite.so

226 <Directory "/usr/local/httpd/htdocs">下

252 RewriteEngine On                        //啟用rewrite地址重寫功能
253 RewriteCond %{HTTP_HOST} !^www.hiahia.com [NC]          //定義信任的站點
254 RewriteRule .*\.(.gif|jpg|swf|mp4|mp3)$ http://aa.com/a.html[R,NC]  //將未信任站臺,以gif、jpg等結尾訪問站點的全部重定向到http://aa.com/a.html
/etc/init.d/httpd restart    //重啟服務

(3)測試

①編輯Windows的hosts文件(C:\Windows\System32\drivers\etc\hosts\)寫入下面兩條,便於客戶端訪問

192.168.10.200 www.hiahia.com //Apache服務器的IP與對應域名
192.168.10.100 www.hehe.com //要盜鏈的服務器

②將要瀏覽的文件放到Apache服務器的/usr/local/httpd/htdocs/下

③在要盜鏈的服務器,新建網頁文件,盜取地址

技術分享圖片

④客戶端訪問:
www.hiahia.com/文件 //允許訪問
www.hehe.com/hehe.html //不允許訪問,自動跳轉到aa.com/a.html

4.隱藏版本信息


vim /usr/local/httpd/conf/httpd.conf

ServerTokens Prod                   //只顯示Web服務器軟件
ServerSignature Off             //關閉管理員信息
/etc/init.d/httpd restart    //重啟服務

Apache優化