




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
-.z中小型架構(gòu)分析及優(yōu)化本文章來自于阿里云云棲社區(qū)摘要:先看架構(gòu)圖:以上架構(gòu)廣泛運(yùn)用中大型中,本文從架構(gòu)每一層分析所用主流技術(shù)和解決手段,有助于初入運(yùn)維朋友們,進(jìn)一步對架構(gòu)認(rèn)識,從而自己形成一套架構(gòu)概念。第一層:CDN國內(nèi)網(wǎng)絡(luò)分布主要南電信北聯(lián)通,造成跨地區(qū)延遲大問題,對于有一定量來說,增加CDN〔內(nèi)容分發(fā)網(wǎng)絡(luò)〕層可有效改善此現(xiàn)象,也是加速的最好選擇。先看架構(gòu)圖:以上架構(gòu)廣泛運(yùn)用中大型中,本文從架構(gòu)每一層分析所用主流技術(shù)和解決手段,有助于初入運(yùn)維朋友們,進(jìn)一步對架構(gòu)認(rèn)識,從而自己形成一套架構(gòu)概念。第一層:CDN國內(nèi)網(wǎng)絡(luò)分布主要南電信北聯(lián)通,造成跨地區(qū)延遲大問題,對于有一定量來說,增加CDN〔內(nèi)容分發(fā)網(wǎng)絡(luò)〕層可有效改善此現(xiàn)象,也是加速的最好選擇。CDN把頁面緩存到全國分布的節(jié)點(diǎn)上,用戶時(shí)從最近的機(jī)房獲取數(shù)據(jù),這樣大大減少網(wǎng)絡(luò)的路徑。如果想自己搭建CDN,不建議這么做,因?yàn)槭裁茨?其實(shí)說白了,就是什么事別往運(yùn)維上攔。CDN架構(gòu)部署不復(fù)雜,影響效果的因素卻很多,后期管理維護(hù)也比較復(fù)雜,想到達(dá)預(yù)期的效果確非易事,這是一個(gè)費(fèi)力不討好的活,最后老板還是感覺是你能力缺乏。建議找專做CDN的公司,費(fèi)用也不貴,有抗流量攻擊能力,效果也很好,運(yùn)維也少很多事,何樂而不為呢!第二層:反向代理〔網(wǎng)頁緩存〕如果CDN沒有緩存要請求的數(shù)據(jù)則向這層發(fā)起請求,在代理效勞器配置緩存功能〔本地〕,代理效勞器就查找本地緩存是否有CDN請求的數(shù)據(jù),如果有就直接返回給CDN,如果沒有則請求后端負(fù)載均衡器然后轉(zhuǎn)發(fā)給WEB效勞器返回?cái)?shù)據(jù)給代理效勞器,代理效勞器再將結(jié)果給CDN。代理效勞器一般緩存不經(jīng)常變動(dòng)的靜態(tài)頁面,如image、js、css、html等,主流的緩存軟件有Squid、Varnish、Ngin*。第三層:負(fù)載均衡量較大的都會(huì)用到負(fù)載均衡,因?yàn)檫@是解決單臺效勞器性能瓶頸的最好方法。反向代理將請求轉(zhuǎn)發(fā)給負(fù)載均衡器,負(fù)載均衡器根據(jù)算法〔輪訓(xùn)、負(fù)載情況選擇后端等〕交給后端WEB效勞處理,WEB效勞處理完成后直接返回?cái)?shù)據(jù)給反向代理效勞器。負(fù)載均衡合理分配請求給后端多臺WEB效勞器,減輕單臺效勞器并發(fā)負(fù)載,并保證效勞可用性。主流的負(fù)載均衡軟件有LVS、HAPro*y、Ngin*。第四層:WEB效勞WEB效勞是處理用戶請求的,WEB效勞處理效率,直接影響到速度,為防止這層因素造成慢,應(yīng)對其進(jìn)展調(diào)優(yōu),讓W(xué)EB效勞發(fā)揮到最正確狀態(tài)。常見的WEB效勞有Apache和Ngin*。Apache優(yōu)化:1).mod_deflate壓縮模塊查看是否加載:1*
apachectl
–M
|grep
deflate如果沒有安裝使用ap*s編譯進(jìn)去:1*
/usr/local/apache/bin/ap*s
–c
–I
–A
apache源碼目錄/modules/mod_deflate.cdeflate配置參數(shù):123456<IfModulemod_deflate.c>DeflatepressionLevel6
*壓縮等級〔1-9〕,數(shù)值越大效率越高,消耗CPU也就越高SetOutputFilterDEFLATE
*啟用壓縮AddOutputFilterByTypeDEFLATE
te*t/html
te*t/plain
te*t/*ml
*壓縮類型AddOutputFilterByTypeDEFLATE
css
js
html
htm
*ml
php
</IfModule>2).mod_e*pires緩存模塊查看是否加載:1*
apachectl
–M
|grep
e*pires如果沒有安裝使用ap*s編譯進(jìn)去:1*
/usr/local/apache/bin/ap*s
–c
–I
–A
apache源碼目錄/modules/mod_e*pires.c再在d.conf啟用模塊:LoadModulee*pires_modulemodules/mod_e*pires.so緩存機(jī)制有三種用法:全局、目錄和虛擬主機(jī)全局配置,在配置文件末尾添加:123456<IfModulemod_e*pires.c>E*piresActiveon
*啟用有效期控制,會(huì)自動(dòng)去除已過期的緩存,然后從效勞器獲取新的E*piresDefault
"accessplus
1
days"
*默認(rèn)任意格式的文檔都是1天后過期E*piresByTypete*t/html
"access
plus
12
months"
E*piresByTypeimage/jpg
"access
plus
12
months"
*jpg格式圖片緩存12月</IfModule>3).工作模式選擇及優(yōu)化apache有兩種常見工作模式,worker和prefork,默認(rèn)是worker,是混合型的MPM〔多路處理模塊〕,支持多進(jìn)程和多線程,由線程來處理請求,所以可以處理更多請求,提高并發(fā)能力,系統(tǒng)資源開銷也小于基于進(jìn)程的MPM,由于線程使用進(jìn)程內(nèi)存空間,進(jìn)程崩潰會(huì)導(dǎo)致其下線程崩潰。而prefork是非線程型MPM,進(jìn)程占用系統(tǒng)資源也比worker多,由于進(jìn)程處理連接,在工作效率上也比worker更穩(wěn)定。可通過apache2–l查看當(dāng)前工作模式,在編譯時(shí)使用—with-mpm參數(shù)指定工作模式。根據(jù)自己業(yè)務(wù)需求選擇不同工作模式,再適當(dāng)增加工作模式相關(guān)參數(shù),可提高處理能力。配置參數(shù)說明:12345678<IfModuleprefork.c>StartServers
8
*默認(rèn)啟動(dòng)8個(gè)d進(jìn)程MinSpareServers
5
*最小的空閑進(jìn)程數(shù)Ma*SpareServers
20
*最大的空閑進(jìn)程數(shù),如果大于這個(gè)值,apache會(huì)自動(dòng)kill一些進(jìn)程ServerLimit
256
*效勞器允許進(jìn)程數(shù)的上限Ma*Clients
256
*同時(shí)最多發(fā)起多少個(gè),超過則進(jìn)入隊(duì)列等待Ma*RequestsPerChild
4000
*每個(gè)進(jìn)程啟動(dòng)的最大線程</IfModule>Ngin*優(yōu)化:1).gzip壓縮模塊12345678910
{
……
gzip
on;
gzip_min_length
1k;
*允許壓縮的頁面最小字節(jié)數(shù),默認(rèn)是0,多大都壓縮,小于1k的可能適得其反
gzip_buffers
4
16k;
*gzip申請內(nèi)存的大小,按數(shù)據(jù)大小的4倍去申請內(nèi)存
gzip__version
1.0;
*識別協(xié)議版本
gzip_p_level
2;
*壓縮級別,1壓縮比最小,處理速度最快,9壓縮比最大,處理速度最慢
gzip_types
te*t/plainapplication/*-javascriptte*t/css
application/*ml
image/jpg;
*壓縮數(shù)據(jù)類型
gzip_vary
on;
*根據(jù)客戶端的頭來判斷,是否需要壓縮}2).e*pires緩存模塊12345678910server
{
location
~
.*\.(gif|jpg|png|bmp|swf)$
*緩存數(shù)據(jù)后綴類型
{
e*pires
30d;
*使用e*pires緩存模塊,緩存到客戶端30天
}
location
~
.*\.(
jsp|js|css)?$
{
e*pires
1d;
}}3).fastcgi優(yōu)化ngin*不支持直接調(diào)用或者解析動(dòng)態(tài)程序〔php〕,必須通過fastcgi〔通用網(wǎng)關(guān)接口〕來啟動(dòng)php-fpm進(jìn)程來解析php腳本。也就是說用戶請求先到ngin*,ngin*再將動(dòng)態(tài)解析交給fastcgi,fastcgi啟動(dòng)php-fpm解析php腳本。所以我們有必要對fastcgi和php-fpm進(jìn)展適當(dāng)?shù)膮?shù)優(yōu)化。12345678910111213141516
{
……
fastcgi_cache_path/usr/local/ngin*/fastcgi_cache
levels=1:2
keys_zone=TEST:10m
inactive=5m;
*
FastCGI緩存指定一個(gè)文件路徑、目錄構(gòu)造等級、關(guān)鍵字區(qū)域存儲時(shí)間和非活動(dòng)刪除時(shí)間
fastcgi_connect_timeout
300;
*指定連接到后端FastCGI的超時(shí)時(shí)間
fastcgi_send_timeout
300;
*指定向FastCGI傳送請求的超時(shí)時(shí)間
fastcgi_read_timeout
300;
*指定接收FastCGI應(yīng)答的超時(shí)時(shí)間
fastcgi_buffer_size
64k;
*指定讀取FastCGI應(yīng)答第一局部需要多大的緩沖區(qū)
fastcgi_buffers
4
64k;
*指定本地需要用多少盒多大的緩沖區(qū)來緩沖FastCGI的應(yīng)答請求
fastcgi_busy_buffers_size
128k;
fastcgi_temp_file_write_size
128k;
*表示在寫入緩存文件時(shí)使用多大的數(shù)據(jù)塊,默認(rèn)值是fastcgi_buffers的兩倍
fastcgi_cache
TEST;
*開啟fastcgi_cache緩存并指定一個(gè)TEST名稱
fastcgi_cache_valid
200
302
1h;
*指定200、302應(yīng)答代碼的緩存1小時(shí)
fastcgi_cache_valid
301
1d;
*將301應(yīng)答代碼緩存1天
fastcgi_cache_valid
any
1m;
*將其他應(yīng)答均緩存1分鐘{php-fpm.conf配置參數(shù):12345pm
=dynamic
*兩種控制子進(jìn)程方式〔static和dynamic〕pm.ma*_children=
5
*同一時(shí)間存活的最大子進(jìn)程數(shù)pm.start_servers=
2
*啟動(dòng)時(shí)創(chuàng)立的進(jìn)程數(shù)pm.min_spare_servers=
1
*最小php-fpm進(jìn)程數(shù)pm.ma*_spare_servers=
3
*最大php-fpm進(jìn)程數(shù)4).pro*y_cache本地緩存模塊123456789101112131415161718192021
{
……
pro*y_temp_path
/usr/local/ngin*/pro*y_cache/temp;
*緩存臨時(shí)目錄
pro*y_cache_path
/usr/local/ngin*/pro*y_cache/cache
levels=1:2
keys_zone=one:10m
inactive=1d
ma*_size=1g;
*緩存文件實(shí)際目錄,levels定義層級目錄,1:2說明1是一級目錄,2是二級目錄,keys_zone存儲元數(shù)據(jù),并分配10M內(nèi)存空間。inctive表示1天沒有被的緩存就刪除,默認(rèn)10分鐘。ma*_size是最大分配磁盤空間
server
{
listen
80;
server_name
0;
location
/
{
pro*y_cache
one;
*調(diào)用緩存區(qū)
*pro*y_cache_valid
200
304
12h;
*可根據(jù)狀態(tài)碼設(shè)置不同的緩存時(shí)間
pro*y_cache_valid
any
10m;
*緩存有效期為10分鐘
}
*去除URL緩存,允許來自哪個(gè)網(wǎng)段的IP可以去除緩存〔需要安裝第三方模塊"ng*_cache_purge"〕,去除URL緩存方法:文件名
location
~
/purge(/.*){
allow
;
allow
/24;
deny
all;
pro*y_cache_purge
cache_one$host$1$is_args$args;
}
}小結(jié):啟用壓縮模塊可以節(jié)省一局部帶寬,會(huì)增加WEB端CPU處理,但在上圖架構(gòu)中,WEB端啟用壓縮模塊并沒有起到作用,因?yàn)閭鬏數(shù)缴蠈幼叩氖蔷钟蚓W(wǎng)。對于直接面向用戶的架構(gòu)還是要啟用的。WEB也不用啟用e*pires模塊,因?yàn)橛辛朔聪虼硇谄骱虲DN,所以到不了用戶瀏覽器,開啟起不到作用。如果反向代理使用ngin*做代理,可開啟e*pires模塊,將靜態(tài)文件緩存到用戶瀏覽器,瀏覽器發(fā)起請求時(shí),先判斷本地緩存是否有請求的數(shù)據(jù),如果有再判斷是否過期,如果不過期就直接瀏覽緩存數(shù)據(jù),哪怕效勞器資源已經(jīng)改變,所以要根據(jù)業(yè)務(wù)情況合理設(shè)置過期時(shí)間。5.利用PHP緩存器提高代碼執(zhí)行效率php程序在沒有使用緩存器情況下,每次請求php頁面,php都會(huì)對此頁面進(jìn)展代碼編譯,這就意味著重復(fù)的編譯工作會(huì)增加效勞器負(fù)載。有了緩存器就會(huì)把每次編譯后的數(shù)據(jù)緩存到共享內(nèi)存中,下次直接使用緩沖區(qū)已編譯好的代碼,從而防止重復(fù)的編譯過程,以加快其執(zhí)行效率。因此PHP使用緩存器是完全有必要的!主流的PHP緩存器有:eAccelerator、*Cache第五層:動(dòng)靜別離動(dòng)靜別離,顧名思義,是將動(dòng)態(tài)頁面和靜態(tài)頁面別離到不同效勞器上處理,比方使用web是ngin*,可以讓fastcgi部署到單獨(dú)一臺效勞器,專門解析p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年護(hù)師類之護(hù)師(初級)基礎(chǔ)試題庫和答案要點(diǎn)
- 教師培訓(xùn):校園安全
- 第 4 單元評估檢測題(B卷)(單元測試)(無答案)2024-2025學(xué)年二年級下冊數(shù)學(xué)人教版
- 中國乙丙共聚物市場發(fā)展?fàn)顩r與投資趨勢預(yù)測報(bào)告2025-2031年
- 北師大定積分高中知識
- 天然氣知識培訓(xùn)課件
- 固定資產(chǎn)管理課件
- 小學(xué)語文優(yōu)教課件
- 電力安規(guī)考試題及答案
- 教練班鋼管考試題及答案
- 【初中生物】食物中營養(yǎng)物質(zhì)課件2024-2025學(xué)年人教版生物七年級下冊
- 2025河北保定鈔票紙業(yè)限公司招聘33人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 中專藥品gsp考試試題及答案
- 智慧教育解決方案
- 2025年共青團(tuán)入團(tuán)積極分子考試測試試卷題庫及答案
- T-CSOE 0003-2024 井下套管外永置式光纜安裝要求
- 合肥鼎材科技有限公司光阻車間光刻膠生產(chǎn)線技術(shù)改造項(xiàng)目環(huán)評報(bào)告書
- 北師大版(2024)七年級下冊生物第6章 人體的營養(yǎng) 學(xué)情評估測試卷(含答案解析)
- 2025體育單招英語備考100個(gè)高頻名詞精講(精校打印版)
- 9.1.2 用坐標(biāo)描述簡單幾何圖形(課件)-2024-2025學(xué)年新教材七年級下冊數(shù)學(xué)
- 精神科敘事護(hù)理案例分享
評論
0/150
提交評論