大規模網站架構之WEB加速器SQUID(二)
4、快取策略說明
SQUID使用了LM演算法,LM就是頁面Header裡時間(Date)和Last-Modified時間的差。Date一般是Squid從後面取頁面的時間,Last-Modified 一般是頁面生成時間。
refresh_pattern 的語法是
refresh_pattern [-i] regexp min percent max [options]
min, max的單位是分鐘,percent就是百分比。
refresh_pattern 的演算法如下:(當前時間定義為CURRENT_DATE)
1) If ((CURRENT_DATE-DATE(就是LM裡定義的時間)) < min),cache是新鮮的
2) else if ((CURRENT_DATE-DATE) < (min + (max-min)*percent),cache是新鮮的
3) else cache是過期的
cache過期就需要從後面server取新鮮內容。
常用的幾個引數的意思
override-expire
該選項導致squid在檢查Expires頭部之前,先檢查min值。這樣,一個非零的min時間讓squid返回一個未確認的cache命中,即使該響應準備過期。
override-lastmod
改選項導致squid在檢查LM-factor百分比之前先檢查min值。
reload-into-ims
該選項讓squid在確認請求裡,以no-cache指令傳送一個請求。換句話說,squid在轉發請求之前,對該請求增加一個If-Modified- Since頭部。注意這點僅僅在目標有Last-Modified時間戳時才能工作。外面進來的請求保留no-cache指令,以便它到達原始伺服器。
一般情況可以使用 reload-into-ims。它其實是強行控制物件的超時時間,這違反了http協議的精神,但是在頻寬較窄的場合,可以提高明顯系統相應時間。
關於SQUID FOR WINDOWS介紹已經很多,本文就不在贅述,詳見SQUID權威手冊這本書。 在使用SQUID之前,首先要規劃或確定你現有佈署環境,如果你是Single Web Server 建議你在Web Server前增加一臺機器做為SQUID伺服器 三、SQUID FOR WINDOWS配置 本文中SQUID放在172.20.65.201的機器上,應用WEB SERVER IP為172.20.65.203,其中SQUID在201上的80埠偵聽,測試客戶端機器為172.20.65.231,在squid.conf中#代表註釋,所以開啟某項設定,需去掉前面的#。TAG標籤代表每一功能項的設定。 1、下載 下載SQUID FOR WINDOWS(我所用的版本是Squid 2.7.STABLE6,各個版本的配置可能略有不同,大家請注意) 2、安裝 將SQUID解壓到c:/squid(當然也可解壓在其它碟符下) 3、建立磁碟快取和日誌目錄 預設情況是在安裝磁碟下建立,為確保效能大幅度提升,建立選擇磁碟空間容量較大的碟符,如:建立d:/squid/var目錄,在var目錄下建立logs和cache目錄,其中logs目錄用 於存放日誌,cache目錄用於存放硬碟快取資料。 4、建立快取目操作許可權 為了使抓取的資料,能夠存放在快取目錄下,建立系統賬戶如squidApp,將其屬於普通使用者組應可,將d:/squid授予該使用者讀寫許可權即可。 5、檔案更改 c:/squid/etc是SQUID的配置資訊的存放處,為確保安全,在你修改配置檔案前,請將其備份,然後將squid.conf.default修改為squid.conf, mime.conf.default修改為 mime.conf ,cachemgr.conf.default 修改為cachemgr.conf 6、配置SQUID 針對於SQUID來講大部分配都在squid.conf中,本文中所使用環境如下: 開啟如下訪問控制 acl all src all acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl localnet src 172.16.65.231/255.255.0.0 指定本地網路及掩碼 開啟訪問埠 acl SSL_ports port 443 acl Safe_ports port 80# http acl Safe_ports port 21# ftp acl Safe_ports port 443# https acl Safe_ports port 70# gopher acl Safe_ports port 210# wais acl Safe_ports port 1025-65535# unregistered ports acl Safe_ports port 280# http-mgmt acl Safe_ports port 488# gss-http acl Safe_ports port 591# filemaker acl Safe_ports port 777# multiling http acl CONNECT method CONNECT 開啟訪問控制,請一定要注意順序 http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow all http_access allow localnet http_access deny all 指定SQUID在80埠偵聽, vhost 指定使用加速模式 http_port 80 vhost 203後臺WEB SERVER, parent指父節點, 80 指後臺網站的埠, 0 ICP 服務埠,no-query originserver 獲取快取時的選項 cache_peer 172.20.65.203 parent 80 0 no-query originserver 快取設定 maximum_object_size_in_memory 1024 KB cache_dir ufs d:/squid/var/cache 1024 16 256 注意路徑 maximum_object_size 4096 KB cache_swap_low 90 cache_swap_high 95 日誌設定 access_log d:/squid/var/logs/access.log squid 訪問日誌 cache_log d:/squid/var/logs/cache.log cache_store_log d:/squid/var/logs/store.log emulate_httpd_log on 控制頁面快取內容 refresh_pattern ^ftp:144020%10080 refresh_pattern ^gopher:14400%1440 refresh_pattern -i (/cgi-bin/|/?) 00%0 refresh_pattern .020%4320 refresh_pattern -i /.css$ 20 50% 120 reload-into-ims refresh_pattern -i /.xml$ 20 50% 120 reload-into-ims refresh_pattern -i /.html$ 20 90% 120 reload-into-ims refresh_pattern -i /.jpg$ 20 90% 120 reload-into-ims refresh_pattern -i /.png$ 20 90% 120 reload-into-ims refresh_pattern -i /.gif$ 20 90% 120 ignore-reload refresh_pattern -i /.js$ 20 90% 120 reload-into-ims refresh_pattern -i /.htm$ 20 90% 120 reload-into-ims 設定郵箱 cache_mgr webmaster_breeze 設定本地主機檔案 hosts_file c:/windows/system32/drivers/etc/hosts 7、安裝服務 將squid安裝為服務,命令格式:squid -i [-f configfile] [-n servicename],如c:/squid/sbin/squid -i -n Squid_Proxy 8、初始化快取目錄 c:/squid/sbin/squid -z 9、啟動Squid_Proxy服務 執行services.msc開啟服務視窗,選擇Squid_Proxy服務 ,如果啟動過程出錯90%是配置檔案出現問題。 10、squid命令 squid -k reconfigure //啟用新的配置檔案 squid -k rotate //截斷日誌 squid -k shutdown //stop squid squid -dx 當服務不能啟動時,進行除錯 更多配置請參見文件 四、SQUID測試 找一臺機器進行測試,並檢視access.log日誌,如果出現 TCP_DENY的資訊,多為配置不正確。如出現如下資訊TCP_MEM_HIT/200 表示,SQUID已經起作用,該請求是從 SQUID執行機器的記憶體中響應的。五、效能
用LR跑了一下,1000個併發,記憶體命中率在100%。下次把測試結果貼上。
3 1 (請您對文章做出評價) posted on 2010-03-15 14:07 design-life 閱讀(888) 評論(14) 編輯 收藏
評論:
不錯,有機會會應用在產品伺服器上
回覆 引用 檢視 #2樓 2010-03-15 14:23 | 風雲幻影
寫的不錯,頂下。但是很遺憾沒看到具體的測試資料對比,還有,樓主比較過SQUID和Memcache兩者之間的效能差異嗎?
回覆 引用 檢視 #3樓 2010-03-15 14:30 | 代震軍
@風雲幻影
squid主要用於‘快取靜態檔案’使用的,比如JPG,GIF,JS,CSS等,與MEMCACHED不是一類東西,呵呵。
回覆 引用 檢視 #4樓 2010-03-15 14:43 | Jon.Hong
好文, 作個記號。。。。
另外請問博主,有更多squid的資料嗎?
回覆 引用 檢視 #5樓 2010-03-15 14:53 | TT.Net
squid用做的伺服器是記憶體放不下了再去訪問目錄嗎?
那就是伺服器配置要記憶體大 硬碟大。CPU一般就可以了嗎?
外網是訪問SQUID這臺的80嗎?
回覆 引用 檢視 #6樓 2010-03-15 14:55 | Jon.Hong
@代震軍
有個問題想請教,謝謝
用squid快取圖片,如果源圖片已經刪除或重新上傳,squid伺服器是怎麼更新的呢?
回覆 引用 檢視 #7樓[樓主] 2010-03-15 15:01 | design-life
@TT.Net
SQUID可以設定記憶體、磁碟大小,當記憶體不能命中時,檢索磁碟,由於使用了Hash技術,索引速度飛快,SQUID其實可以看作反向代理,可以設定在80埠偵聽。
回覆 引用 檢視 #8樓 2010-03-15 15:02 | TT.Net
@design-life
期待你的下一篇
回覆 引用 檢視 #9樓[樓主] 2010-03-15 15:05 | design-life
@Jon.Hong
網上有SQUID權威指南中文版的PDF,你可以下載看看,很全。
SQUID更新快取的策略符合W3C標準,主要用到了last-moidfy和LM演算法
回覆 引用 檢視 #10樓 2010-03-15 15:44 | 代震軍
@Jon.Hong
SQUID有個客戶端檔案叫:squidclient(有下載包中),你可以使用其中的purge指令來刪除快取檔案,這樣後續訪問就會重新讀取了,形如:
[[email protected] etc]# /usr/local/squid/bin/squidclient -p 80 -m PURGE http://www.abc.com/images/index/jdt/images/2.jpg
回覆 引用 檢視 #11樓 2010-03-15 15:47 | 代震軍
@Jon.Hong
另外,如果網站使用NGINX做的lb的話,那可以使用其原生態的外掛來做靜態檔案快取,效率也很高,下面這篇文章中有詳細描述,
http://blog.s135.com/nginx_cache/
回覆 引用 檢視 #12樓 2010-03-15 15:52 | Jon.Hong
@代震軍
謝謝。
回覆 引用 檢視 #13樓 2010-03-15 16:16 | killkill
squid 不錯,可以為快取設定策略,感覺上唯一缺陷的地方是不能支援多CPU ......
回覆 引用 檢視 #14樓 2010-03-15 16:34 | 肥燕子
"acl localnet src 172.16.65.231/255.255.0.0"
指定本地網路及掩碼,我感覺有誤吧,按照樓主的配置,本地的網路應該是172.16.65.0
相關推薦
大規模網站架構之WEB加速器SQUID(二)
引言 大規模網站瓶頸之一就是效能問題,如何讓你的網站飛速運轉起來,一直是架構師和開發人員苦於思考的問題,隨著CMS的成熟,大多數門戶及網站都通過靜態化來提升網站的效能和安全,但隨之而來CMS管理髮布也變得越複雜,如何能使釋出的資訊快速被使用者訪問,如何方便靈活定義一種策
大規模網站架構的緩存機制
這樣的 實踐 未來 time 部署 star 命中率 手機瀏覽 產生 【問底】徐漢彬:大規模網站架構的緩存機制和幾何分形學 發表於16小時前|1796次閱讀| 來源CSDN|10 條評論| 作者徐漢彬 問底CDN緩存徐漢彬 摘要:緩存機制簡單總結可以說是空間換時間,被用於
大型網站架構之分布式消息隊列(轉)
工作經驗 大型網站 異步處理 消費 min 實現 通知 ima 可能 以下是消息隊列以下的大綱,本文主要介紹消息隊列概述,消息隊列應用場景和消息中間件示例(電商,日誌系統)。 本次分享大綱 消息隊列概述 消息隊列應用場景 消息中間件示例 JMS消息服務 常用
大型網站架構之分布式消息隊列
並且 other splay 2016年 均衡 tails lin 庫存 寫入 大型網站架構之分布式消息隊列 轉載
中大型網站架構之路一
存儲 cache 查詢 動靜分離 面向服務 keepalive 網站 web 共享存儲 初期: 單臺服務器部署 web與數據庫獨立部署 動靜分離-初期 數據庫主從與查詢緩存 七層負負載均衡和共享存儲 中期: 數據庫架構擴展 soa面向服務器架構
大型網站架構之百萬PV
rop 就是 priority ipaddress -s 模式 lse 故障 shutdown PV(page view)即頁面瀏覽量,通常是衡量一個網絡新聞頻道或網站甚至一條網絡新聞的主要指標。網頁瀏覽數是評價網站流量最常用的指標之一,簡稱為PV。 案例概述本案
大型網站架構之百萬PV網站架構案例
nta java 解壓縮 記錄日誌 tex jsp position .tar.gz 註意 一、案例概述 本案例采用四層模式實現,主要分為前端反向代理、web層、數據庫緩存層和數據庫層。 前端反向代理采用主備模式 web層采用群集模式 數據庫緩存層采用主備模式 數據庫層采
大型網站架構之千萬PV之RabbitMQ
內存 col fir ebs bin vim start ofo abd 簡介 MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。消息傳遞指的是
千萬PV 網站架構之 RabbitMQ 消息列隊
連接 top -- blog 等等 應用程序 linu 發送 nodes RabbitMQ 簡介 : MQ全稱為Message Queue,消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接
千萬PV網站架構之RabbitMQ(消息隊列)安裝、集群
-- sha bcd 直接 ssa stop The 節點 tex RabbitMQ介紹: MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。消
淺析:網站製作之web前端開發設計
在Web3.0熱潮下,廣州製作網頁以其相關軟體技術的開發掌握和基礎瞭解,在設計上,有其相關的天然優勢。對於網站製作學習者而言,以專業優勢和深厚的Web前段開發設計在現有的能力挖掘中,以其特色化和深度技術,實施專業深度掌握,為個人職業生涯規劃和相關的工作經驗實踐提供助力。 Web前端開發設計是網站製作
asp.net core mcroservices 架構之 分散式日誌(二)之自定義日誌開發
一 netcore日誌原理 &nbs
高效能網站架構之快取篇—Redis叢集搭建
看過高效能網站架構之快取篇--Redis安裝配置和高效能網站架構之快取篇--Redis使用配置埠轉發這兩篇文章的,相信你已經對redis有一定的瞭解,並能夠安裝上,進行簡單的使用了,但是在咱們的實際應用中,使用redis肯定不會使用單機版,不光是redis
Spring Boot 入門之 Web 篇(二)
一、前言 上一篇《Spring Boot 入門之基礎篇(一)》介紹了 Spring Boot 的環境搭建以及專案啟動打包等基礎內容,本篇繼續深入介紹 Spring Boot 與 Web 開發相關的知識。 二、整合模板引擎 由於 jsp 不被 SpringBoot 推薦使用,所以模板引擎主
大型網站架構之架構演變
處於這個網際網路開發時代,作為一名軟體工程師,我們經常會聽到大型網站架構這個字眼,那到底什麼是大型網站呢,這樣的網站又是一種什麼樣的架構設計呢?今天我們就開始談談大型網站架構設計系列,首先我們今天講講大型網站架構設計是如何演變的,跟著我一起出發吧。一、大型網站系統的特點高併發
大型網站架構之分散式訊息佇列——RabbitMQ
Message Broker與AMQP簡介 Message Broker是一種訊息驗證、傳輸、路由的架構模式,其設計目標主要應用於下面這些場景: 訊息路由到一個或多個目的地 訊息轉化為其他的表現方式 執行訊息的聚集、訊息的分解,並將結果傳送到他們的目的地,然後重新組合
大規模網站架構的快取機制和幾何分形學
快取機制在我們的實際研發工作中,被極其廣泛地應用,通過這些快取機制來提升系統互動的效率。簡單的總結來說,就是在兩個環節或者系統之間,會引入一個cache/buffer做為提升整體效率的角色。 而 有趣的是,這種快取機制令人驚奇並且優美的遵循著“幾何分形”的規律,也就
網站架構之變遷
一個網站在剛開始的時候可能就只有一個應用程式,然後網站前臺內容和後臺管理功能會分解為兩個系統,隨著網站的業務發展,需要增加的功能越來越多,這兩個系統會越來越龐大,更重要的是,在網站快速發展的過程中,為了快速的適應市場的變化,很多網站開發人員在程式碼結構的很多地方上採取簡單的權
Spring Boot 學習之 Web 篇(二)
該系列並非完全原創,官方文件、作者一、前言上一篇《Spring Boot 入門之基礎篇(一)》介紹了 Spring Boot 的環境搭建以及專案啟動打包等基礎內容,本篇繼續深入介紹 Spring Boot 與 Web 開發相關的知識。二、整合模板引擎由於 jsp 不被 Spr
架構之美第十二章-好的架構
我們曾提到,架構師玩的是折中的遊戲。對於一組給定的功能需求和品質需求,沒有唯一的正確架構和唯一的“正確答案”。我們從經驗中得知,應該對架構進行評估,確定它是否滿足其需求,然後再投入資金