新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux網站架構系列之apache----調優篇

        Linux網站架構系列之apache----調優篇

        作者: 時間:2016-10-08 來源:網絡 收藏

        安裝方法:在配置編譯的工程中,加入參數--with-mpm=worker,如果不加的話系統會采用默認prefork模式。

        優點:內存占用比prefork模式低,適合高并發高流量HTTP服務。

        缺點:假如一個線程崩潰,整個進程就會連同其任何線程一起“死掉”。由于線程共享內存空間,所以一個程式在運行時必須被系統識別為“每個線程都是安全的”。服務穩定性不如prefork模式。

        配置參數說明:

        StartServers 2 #最初建立的子進程

        MaxClients 150 #所有子進程中的線程總數。如果現有子進程中的線程總數不能滿足負載,控制進程將派生新的子進程。

        MinSpareThreads 25 #最小空閑線程數,如果空閑的線程小于設定值,apache會自動建立線程,如果服務器負載大的話,可以考慮加大此參考值。

        MaxSpareThreads 75 #最大空閑線程數,如果空閑的線程大于設定值,apache會自動kill掉多余的線程,如果服務器負載大的話,可以考慮加大此參考值。

        ThreadsPerChild 25 #每個進程包含固定的線程數,此參數在worker模式中,是影響最大的參數,ThreadsPerChild的最大缺省值是64,如果負載較大,64是不夠的。這時要顯式使用threadlimit指令,它的最大缺省值是20000.

        MaxRequestsPerChild 0 #功能同prefork模式

        常用配置參考:

        生產環境配置實例1:

        StartServers 3

        MaxClients 2000

        ServerLimit 25

        MinSpareThreads 50

        MaxSpareThreads 200

        ThreadLimit 200

        ThreadsPerChild 100

        MaxRequestsPerChild 0

        生產環境配置實例2:

        StartServers 5

        MaxClients 9600

        ServerLimit 64

        MinSpareThreads 25

        MaxSpareThreads 500

        ThreadLimit 200

        ThreadsPerChild 150

        MaxRequestsPerChild 0

        生產場景配置實例3:

        StartServers 2

        MaxClients 500

        ServerLimit 25

        MinSpareThreads 25

        MaxSpareThreads 75

        ThreadsPerChild 25

        MaxRequestsPerChild 0

        生產場景配置實例4:

        StartServers 3

        MaxClients 1600

        ServerLimit 25

        MinSpareThreads 50

        MaxSpareThreads 200

        ThreadLimit 200

        ThreadsPerChild 64

        worker模式下所能同時處理的請求總數是由子進程總數乘以Threadsperchild值決定的,應該大于等于maxclients。如果負載很大,現有的子進程數不能滿足時,控制進程會派生新的子進程。默認最大的子進程總數是16,如需加大時也需要顯示聲明serverlimit的值(最大值是20000)

        特別說明:如果顯示聲明了ServerLimit,那么它乘以ThreadsPerChild的值必須大于等于MaxClients,而且MaxClients必須是ThreadsPerChild的整數倍,否則apache將會自動調節到一個相應值(可能是個非期望值)。

        數學表達:

        MaxClient=總的進程數(ServerLimit)x線程數(ThreadsPerChild)

        MaxClient%ThreadsPerChild=0

        生產環境中我們需要開啟配置行,這樣才能實現并發鏈接數的增加。

        1、開啟配置行

        這里我們要apache的主配置文件,找到包含的行,并解開注釋

        [root@c64-web /]# grep ; /usr/local/apache/conf/

        #Include conf/extra/

        [root@c64-web /]# sed -i 's##Include conf/extra/; /usr/local/apache/conf/

        注意:編譯安裝的,只有此行解開注釋了,后面的修改才能生效。

        2、修改配置

        1)如果你的apache服務為worker模式,那么生產環境中可以選擇上面worker模式的生產環境配置實例1的配置。

        2)如果你的apache服務為prefork模式,那么生產環境中可以參考上面prefork模式的生產環境配置實例1的配置。

        生產環境中,這里我建議大家選擇worker模式。

        十、開啟防盜鏈

        一些小網站為了盈利,通過盜鏈來實現對自己網站內容的豐富,這無疑加大了企業的空間和流量的成本,因此我們需要對apache進行防盜鏈的配置。

        由于我們要用到mod_rewrite模塊,因此我們需要先檢測該模塊是否安裝,檢測和安裝方法與上面mod_deflate和mod_expires的一樣,這里不多講了。

        防盜鏈配置:

        一般我們都是將防盜鏈的配置,配置在虛擬主機里面,配置如下:

        ServerAdmin

        DocumentRoot /www/html

        ServerName www.sunsky.pw

        ServerAlias sunsky.pw

        CustomLog |/usr/local/sbin/cronolog /app/logs/www_access_%Y%m%d.log combined

        ErrorLog |/usr/local/sbin/cronolog /app/logs/www_error_%Y%m%d.log

        RewriteEngine On

        RewriteCond %{HTTP_REFERER} !^*$ [NC]

        RewriteCond %{HTTP_REFERER} !^$ [NC]

        RewriteCond %{HTTP_REFERER} !^>

        AllowOverride None

        Options FollowSymLinks #不填寫Indexes項,默認即為關閉。

        Require all granted

        第二種:

        AllowOverride None

        Options -Indexes #通過在Indexes前面加-來禁用此功能

        Require all granted

        第三種:

        AllowOverride None

        Options None #禁用所有選項

        Require all granted

        十二、禁用AllowOverride選項,關閉.htaccess文件使用

        首先是性能考慮,如果AllowOverride啟用了.htaccess文件,則apache需要在每個目錄中查找.htaccess文件。因此,無論是否真正用到,啟用.htaccess都會導致服務器性能的下降。另外,對于每一個請求,都需要讀取一次.htaccess文件。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 荣成市| 乳源| 山阳县| 三穗县| 汶上县| 赣榆县| 亳州市| 突泉县| 大足县| 苗栗县| 鹿邑县| 东城区| 富锦市| 波密县| 双江| 金平| 花莲市| 湟源县| 定日县| 丹寨县| 钟祥市| 诏安县| 鄂托克前旗| 宣汉县| 高碑店市| 康保县| 岐山县| 济源市| 大石桥市| 竹北市| 遵义县| 阳城县| 颍上县| 镇沅| 登封市| 永登县| 交口县| 辰溪县| 青神县| 泾川县| 图木舒克市|