新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Linux網(wǎng)站架構系列之a(chǎn)pache----調(diào)優(yōu)篇

        Linux網(wǎng)站架構系列之a(chǎn)pache----調(diào)優(yōu)篇

        作者: 時間:2016-10-08 來源:網(wǎng)絡 收藏

        ExpiresByType image/png access plus 12 months

        EXpiresByType application/x-shockwave-flash access plus 12 months

        EXpiresByType application/x-javascript access plus 12 months

        ExpiresByType video/x-flv access plus 12 months

        以上三種配置任何一種配置之后,對apache服務器進行優(yōu)化重啟,然后用火狐或者google游覽器的YSlow插件進行緩存效果查看。

        擴展:expires模塊的語法

        上面已經(jīng)的操作就是實現(xiàn)apache的緩存功能。其中,expires后面的參數(shù)你也可以根據(jù)需求自行更改,緩存時間也是一樣可以更改的。

        這里我對expires的模塊語法進行一些細說

        expires模塊用到了ExpiresDefault和EXpiresByType兩個指令,下面是這兩個指令的語法。

        ExpiresDefault “ [plus] {}*”

        EXpiresByType type/encoding [plus] {}

        其中的參數(shù)有3個:access,now(等價于‘access’),modification

        plus關鍵字是可選的。

        必須是整數(shù),確保可以atoi()所接收。(atoi可以把字符串轉(zhuǎn)換成長整型數(shù))

        參數(shù)類型:years,months,weeks,days,hours,minutes,seconds

        下面用幾個例子帶大家理解下

        例如:下面3個指令都表示文檔默認的有效期是一個月

        ExpiresDefault access plus 1 month

        ExpiresDefault access plus 4 weeks

        ExpiresDefault access plus 30 days

        有效期可以通過增加“”子句進一步調(diào)整

        ExpiresByType text/html access plus 1 month 15 days 2 hours

        ExpiresByType image/gif modification plus 5 hours 3 minutes

        注意:如果你使用基于最后修改日期的設置,“Expires”頭將不會被添加到那些并非來自于硬盤文件的內(nèi)容,這是因為這些內(nèi)容并不存在“最后修改時間”的屬性。

        基準時刻可以是源文件的最后修改時刻或者客戶端對源文件的訪問時刻,至于使用那一個則由指定。“M”表示源文件的最后修改時刻,“A”表示客戶端對源文件的訪問時刻,需要注意的是和seconds之間沒有空格。

        這兩個基準的差別是很微妙的。如果使用“M”,所有當前緩存中的文檔副本都將在同一時刻過期,這個可能對定期更新的URL(比如位于同一位置的每周通告)很有好處。如果使用“A”,則每個客戶端所得到的有效期是不一樣的,這個可能對那些幾乎不更新的圖片很有好處,特別是對于一組都引用相同圖片的相關文檔。

        緩存優(yōu)化對企業(yè)來說是至關重要了的,不同的公司類型,緩存的類型和時間又各不相同,大家具體可以用YSlow對淘寶,京東,新浪,谷歌等站點進行測試,看看他們的緩存時間是多少,并思考下為什么那樣設置。

        雖然緩存的設置有如下優(yōu)點

        1.縮短服務的響應時間

        2.減輕服務器負擔

        3.減少網(wǎng)絡帶寬使用量,降低企業(yè)成本

        但是他的缺點也是顯而易見的,由于使用了緩存設置,導致被緩存的內(nèi)容更新了,但是客戶看到的卻還是舊的。

        如何解決被緩存文件及時更新這個問題呢?

        第一種:縮短緩存時間例如:1天,不徹底犧牲性能

        第二種:對緩存的對象改名。

        九、啟用worker模式,提升并發(fā)數(shù)(可以達到2000-5000)

        apache有兩個模式,默認的模式是prefork模式。那么我們?yōu)槭裁匆褂脀orker模式呢?這兩種模式又有什么區(qū)別呢?

        1、prefork模式

        prefork使用的是多個子進程,而每個子進程只有一個線程,每個進程在某個確定的時間只能維持一個連接。

        工作原理:控制進程最初建立若干個子進程,為了不在請求到來時再生成子進程,所以要根據(jù)需求不斷的創(chuàng)建新的子進程,最大可以達到每秒32個直到滿足需求為止。

        安裝方法:在編譯的過程中,加入?yún)?shù)--with-mpm=frefork,不加也可以,因為默認的話,會采用prefork模式。

        優(yōu)點:效率高,穩(wěn)定,安全。對于線程調(diào)試困難的平臺來說,調(diào)試更加容易些。

        缺點:與worker模式相比消耗資源多。

        配置參數(shù)說明:

        StartServers 5 #最初建立的子進程

        MinSpareServers 5 #最小空閑進程數(shù),如果空閑的進程小于設定值,Apache會自動建立進程,如果服務器并發(fā)及負載大的話,可以考慮加大。

        MaxSpareServers 10 #最大空閑進程數(shù),如果空閑的進程大于設定值,Apache會自動kill掉多余的進程,如果服務器負載大的話,可以考慮加大。

        MaxClients 150 #設定的是apache可以同時處理的請求,是對apache性能影響最大的參數(shù),就是apache可以同時處理的請求數(shù),就是說,如果有150個用戶在訪問,那么第151個用戶就要等之前的訪問結束后才能訪問。

        MaxRequestsPerChild 0 #每個子進程可處理的請求數(shù),每個子進程在處理了“MaxRequestsPerChild”個請求后將自動銷毀。0以為著無限,即子進程永不銷毀。雖然缺省設為0可以使每個子進程處理更多的請求,但如果設置成非0值也有兩點重要的好處。(1)可防止意外的內(nèi)存泄露(2)在服務器負載下載的時候會自動減少子進程數(shù)。

        生產(chǎn)環(huán)境配置實例1:

        StartServers 10

        MinSpareServers 10

        MaxSpareServers 15

        ServerLimit 2000

        MaxClients 1000

        MaxRequestsPerChild 5000

        2、worker模式

        worker模式是apche2.x新引進來的模式,是線程與進程的結合,在worker模式下會有多個子進程,每個子進程又會有多個線程。每個線程在某個確定的時間只能維持一個連接。

        工作原理:由主控制進程生成若干個子進程,而每個子進程中又包含固定的線程數(shù),各個線程獨立處理請求,同樣為了不在請求到來時再生成線程,在配置文件中設置了最小和最大的空閑線程數(shù)及所有子進程中的線程總數(shù),如果現(xiàn)有子進程中的線程總數(shù)不能滿足并發(fā)及負載,控制進程將派生新的子進程。



        關鍵詞:

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 盘锦市| 木里| 云浮市| 泰州市| 武汉市| 荥经县| 岱山县| 金昌市| 奈曼旗| 长宁县| 连云港市| 宁阳县| 射洪县| 读书| 普陀区| 阳信县| 那曲县| 拉孜县| 耿马| 吕梁市| 大竹县| 汉寿县| 平邑县| 汝州市| 确山县| 南京市| 大埔区| 佛冈县| 响水县| 朝阳县| 岑巩县| 石棉县| 吉林市| 武定县| 兴城市| 襄樊市| 论坛| 铜陵市| 乡城县| 永丰县| 盐源县|