中小型網站架構分析及優化

2015-11-25 11:54:00 來源:JobBole.com 作者:佚名 人氣: 次閱讀 209 條評論

以上網站架構廣泛運用中大型網站中,本文從架構每一層分析所用主流技術和解決手段,有助于初入網站運維朋友們,進一步對網站架構認識,從而自己形成一套架構概念。...

先看網站架構圖:

網站架構優化 網站優化 大型網站架構 網站架構分析 網站架構設計

以上網站架構廣泛運用中大型網站中,本文從架構每一層分析所用主流技術和解決手段,有助于初入網站運維朋友們,進一步對網站架構認識,從而自己形成一套架構概念。

第一層:CDN

國內網絡分布主要南電信北聯通,造成跨地區訪問延遲大問題,對于有一定訪問量網站來說,增加CDN(內容分發網絡)層可有效改善此現象,也是網站加速的最好選擇。CDN把網站頁面緩存到全國分布的節點上,用戶訪問時從最近的機房獲取數據,這樣大大減少網絡訪問的路徑。如果想自己搭建CDN,不建議這么做,因為什么呢?其實說白了,就是什么事別往運維上攔。CDN架構部署不復雜,影響效果的因素卻很多,后期管理維護也比較復雜,想達到預期的效果確非易事,這是一個費力不討好的活,最后老板還是感覺是你能力不足。建議找專做CDN的公司,費用也不貴,有抗流量攻擊能力,效果也很好,運維也少很多事,何樂而不為呢!

第二層:反向代理(網頁緩存)

如果CDN沒有緩存要請求的數據則向這層發起請求,在代理服務器配置緩存功能(本地),代理服務器就查找本地緩存是否有CDN請求的數據,如果有就直接返回給CDN,如果沒有則請求后端負載均衡器然后轉發給WEB服務器返回數據給代理服務器,代理服務器再將結果給CDN。代理服務器一般緩存不經常變動的靜態頁面,如image、js、css、html等,主流的緩存軟件有Squid、Varnish、Nginx。

第三層:負載均衡

訪問量較大的網站都會用到負載均衡,因為這是解決單臺服務器性能瓶頸的最好辦法。反向代理將請求轉發給負載均衡器,負載均衡器根據算法(輪訓、負載情況選擇后端等)交給后端WEB服務處理,WEB服務處理完成后直接返回數據給反向代理服務器。負載均衡合理分配請求給后端多臺WEB服務器,減輕單臺服務器并發負載,并保證服務可用性。主流的負載均衡軟件有LVS、HAProxy、Nginx。

第四層:WEB服務

WEB服務是處理用戶請求的,WEB服務處理效率,直接影響到訪問速度,為避免這層因素造成訪問慢,應對其進行調優,讓WEB服務發揮到最佳狀態。常見的WEB服務有Apache和Nginx。

Apache優化:

1).mod_deflate壓縮模塊

查看是否加載:

#apachectlM|grepdeflate

如果沒有安裝使用apxs編譯進去:

#/usr/local/apache/bin/apxscIAapache源碼目錄/modules/mod_deflate.c

deflate配置參數:

DeflateCompressionLevel6#壓縮等級(1-9),數值越大效率越高,消耗CPU也就越高SetOutputFilterDEFLATE#啟用壓縮AddOutputFilterByTypeDEFLATEtext/htmltext/plaintext/xml#壓縮類型AddOutputFilterByTypeDEFLATEcssjshtmlhtmxmlphp

2).mod_expires緩存模塊

查看是否加載:

#apachectlM|grepexpires

如果沒有安裝使用apxs編譯進去:

#/usr/local/apache/bin/apxscIAapache源碼目錄/modules/mod_expires.c

再在httpd.conf啟用模塊:LoadModuleexpires_modulemodules/mod_expires.so

緩存機制有三種用法:全局、目錄和虛擬主機

全局配置,在配置文件末尾添加:

ExpiresActiveon#啟用有效期控制,會自動清除已過期的緩存,然后從服務器獲取新的ExpiresDefault"Accessplus1days"#默認任意格式的文檔都是1天后過期ExpiresByTypetext/html"accessplus12months"ExpiresByTypeimage/jpg"accessplus12months"#jpg格式圖片緩存12月

3).工作模式選擇及優化

apache有兩種常見工作模式,worker和prefork,默認是worker,是混合型的MPM(多路處理模塊),支持多進程和多線程,由線程來處理請求,所以可以處理更多請求,提高并發能力,系統資源開銷也小于基于進程的MPM,由于線程使用進程內存空間,進程崩潰會導致其下線程崩潰。而prefork是非線程型MPM,進程占用系統資源也比worker多,由于進程處理連接,在工作效率上也比worker更穩定。可通過apache2 l查看當前工作模式,在編譯時使用—with-mpm參數指定工作模式。根據自己業務需求選擇不同工作模式,再適當增加工作模式相關參數,可提高處理能力。

配置參數說明:

StartServers8#默認啟動8個httpd進程MinSpareServers5#最小的空閑進程數MaxSpareServers20#最大的空閑進程數,如果大于這個值,apache會自動kill一些進程ServerLimit256#服務器允許進程數的上限MaxClients256#同時最多發起多少個訪問,超過則進入隊列等待MaxRequestsPerChild4000#每個進程啟動的最大線程

您可能感興趣的文章

    無相關信息

相關文章