一、基本概念(linuxtone)
squid反向代理作web加速是大型網(wǎng)站的常用模式。
1. squid來自于1990的cache harvest項(xiàng)目。
這個(gè)項(xiàng)目一個(gè)分支形成squid,另一個(gè)形成netapp的netcache產(chǎn)品(netapp的netcache是固化在其硬件產(chǎn)品中的,整體價(jià)格很貴)
2.squid是硬盤緩存,其使用內(nèi)存作緩存內(nèi)容的索引
(一個(gè)索引在32位系統(tǒng)中大小是75bytes,在64位系統(tǒng)中是112bytes)。
可以把squid想象成數(shù)據(jù)庫,硬盤上是數(shù)據(jù),內(nèi)存中是索引:查詢內(nèi)存索引,發(fā)現(xiàn)內(nèi)存位置,發(fā)出去。
3.產(chǎn)品下載及說明(http://download.opensuse.org/repositories/server:/proxy/)
a)Squid:不用說了,就是squid的主程序
b)SARG的全稱是:Squid Analysis Report Generator,SARG作為一款Squid日志分析工具,它采用html格式,詳細(xì)列出了每一位用戶訪問internet的站點(diǎn)信息,時(shí)間占用信息,排名,連接次數(shù),訪問量,訪問量等。
如果做反向代理,sarg可以不安裝。這個(gè)工具對(duì)正向代理更有價(jià)值。
c)SquidGuard:重定向器,可以重寫用戶的uri,類似apache的mod_rewrite。關(guān)于重定向器,我建議少用,可能會(huì)降低性能。
二、性能要素
squid反向代理作web加速器時(shí)需要關(guān)注的系統(tǒng)性能因素主要是:
1 硬件:
i.大內(nèi)存(最重要,影響最大);快速大硬盤(第二要素,更多緩存,看網(wǎng)站實(shí)際數(shù)據(jù)量了,要快速的,
最好是1萬轉(zhuǎn)以上的,如sas10K或西部數(shù)據(jù)的猛禽系列);CPU(較為次要,影響不大,特別是多核處理器基本沒用)。
ii.建議匹配配置:每G磁盤空間需要32M內(nèi)存。這樣,512M內(nèi)存的系統(tǒng),能支持16G的磁盤緩存。你的情況當(dāng)然會(huì)不同。
內(nèi)存需求依賴于如下事實(shí):緩存目標(biāo)大小,CPU體系(32位或64位),同時(shí)在線的用戶數(shù)量,和你使用的特殊功能。
估算:建立一個(gè)有足夠磁盤空間,可存儲(chǔ) 3-7天web流量數(shù)據(jù)的系統(tǒng)。如帶寬1M,則需要約3600*1M的數(shù)據(jù)緩存(3.5G),
如果一天提供8小時(shí)有效訪問,則需要緩存10-28G(看重復(fù)情況了)。
但Squid官方網(wǎng)站說法:squid使用內(nèi)存表索引硬盤緩存內(nèi)容,硬盤內(nèi)容/內(nèi)存索引=177,但要同時(shí)考慮到squid程序內(nèi)存,cache_mem,硬盤緩沖cache等占用的內(nèi)存。
因此,我的估算:2G內(nèi)存的系統(tǒng),使用1.5G內(nèi)存作squid索引,對(duì)應(yīng)硬盤150G。
iii.關(guān)于硬盤說明:requests per second = 1000/seek time/硬盤數(shù),一塊硬盤是比較準(zhǔn)確的,多塊硬盤就不好說了。一定要用random-seek time小的盤,而隨機(jī)尋道時(shí)間短意味著轉(zhuǎn)速要快,越快其隨機(jī)尋道時(shí)間越短!
iv.關(guān)于Swap:
毫不猶豫地關(guān)閉swap,squid是個(gè)大進(jìn)程,使用swap只能使性能下降
2 適合的操作系統(tǒng):
能夠支持posix線程實(shí)現(xiàn)異步io的操作系統(tǒng),如:linux2.6內(nèi)核的系統(tǒng)
3 適合的文件系統(tǒng):
reisfer文件系統(tǒng),處理大量小文件(一般的網(wǎng)頁緩存都是小文件),性能最佳
4 每個(gè)squid對(duì)應(yīng)專門應(yīng)用,寫明httpd_accel_host避免dns查詢,dns查詢很消耗時(shí)間
5 配置盡量使用IP,不用域名,加快訪問速度(如多臺(tái)緩存服務(wù)器/后臺(tái)服務(wù)器等)
三、磁盤IO瓶頸與優(yōu)化
squid的磁盤IO瓶頸與優(yōu)化:
A.現(xiàn)象:不使用cache時(shí),平均響應(yīng)時(shí)間明顯更好,那么可以確認(rèn)磁盤I/O是該水平吞吐量的瓶頸
B.硬件:不用raid(并不能帶來明顯性能提升,而且大大增加系統(tǒng)的風(fēng)險(xiǎn)),最好是獨(dú)立文件系統(tǒng)+獨(dú)立硬盤
C.在/etc/fstab中使用使用掛載參數(shù):noatime(不記錄文件訪問時(shí)間),async(異步IO)
D.使用超過你需要的更大磁盤,并且僅僅使用空間的一半,空間越多寫性能越好;不行就減少cachedir的大小
E.文件系統(tǒng)方式:
1)UFS(squid默認(rèn)的文件系統(tǒng)方式)性能較好,實(shí)時(shí)讀寫。
2)aufs使用異步多線程方式管理緩存讀寫,在多CPU系統(tǒng)上優(yōu)勢(shì)更明顯,一個(gè)cachedir默認(rèn)16個(gè)線程,需要posix線程系統(tǒng),穩(wěn)定性不如ufs,使用Aufs命令:
cache_dir aufs /cache0 4096 16 256
運(yùn)行tail -f store.log看是否有文件寫入磁盤,監(jiān)控之。
注意:aufs要使用大量文件描述符,注意系統(tǒng)設(shè)置(用ulimit命令查看修改,對(duì)于suse10一般不用修改系統(tǒng)文件句柄數(shù),僅需要修改進(jìn)程文件句柄數(shù)量)
3)Diskd 使用消息隊(duì)列實(shí)現(xiàn)異步io,還要修改內(nèi)核參數(shù),不如aufs穩(wěn)定
4)Coss 用一個(gè)大文件存儲(chǔ)全部cache,小型squid系統(tǒng),試驗(yàn)性的
5)null 用于測(cè)試squid性能使用,必須指定cache_dir /tmp null
總結(jié):
如果并發(fā)不高( 6),使用ufs就ok;
高并發(fā),可以使用aufs(aufs在Linux和Solaris上運(yùn)行良好)。
而且,同一服務(wù)器不要使用不同的緩存機(jī)制,cache的大小最好相同。
F.使用reisfer文件系統(tǒng)
聯(lián)系客服