Varnish快取伺服器原理

2021-07-08 19:44:01 字數 1005 閱讀 4849

varnish 是什麼

varnish是高效能開源的反向**伺服器和http快取伺服器

varnish的功能與squid伺服器相似,都可以用來做http快取

squid是從硬碟讀取快取的資料,而varnish把資料存放在記憶體中,直接從讀取記憶體,避免了頻繁在記憶體、磁碟中交換檔案,所以varnish要相對更高效,但也有缺點,記憶體中的快取在伺服器重啟後會丟失

varnish 如何工作

初始化過程

varnish 的master程序負責啟動工作,master程序讀取配置檔案,根據指定的空間大小(例如管理員分配了2g記憶體)來建立儲存空間,建立並管理child程序

child程序來處理後續任務,它會分配一些執行緒來執行不同的工作,例如

接受http請求

為快取物件分配儲存空間

清除過期快取物件

釋放空間 碎片整理

http請求處理過程

有乙個專門負責接收http請求的執行緒,一直監聽請求埠,當有請求過來時,負責喚起乙個工作執行緒來處理請求

工作執行緒會分析http請求的uri,知道了這個請求想要什麼,就到快取中查詢是否有這個物件

如果有,就把快取物件直接返回給使用者

如果沒有,會把請求轉給後端伺服器處理,並等待結果,工作執行緒從後端得到結果內容後,先把內容作為乙個快取物件儲存到快取空間(以備下次請求這個物件時快速響應),然後再把內容返回給使用者

分配快取過程

有乙個物件需要快取時,根據這個物件的大小,到空閒快取區中查詢大小最適合的空閒塊,找到後就把這個物件放進去

如果這個物件沒有填滿這個空閒塊,就把剩餘的空間做為乙個新的空閒塊

如果空閒快取區中沒地方了,就要先刪除一部分快取來騰出地方,刪除是根據最近最少使用原則

釋放快取過程

有乙個執行緒來負責快取的釋放工作,他定期檢查快取中所有物件的生存週期,如果某個物件在指定的時間段內沒有被訪問,就把這個物件刪除,釋放其占用的快取空間

釋放空間後,檢查一下臨近的記憶體空間是否是空閒的,如果是,就集成為乙個更大的空閒塊,實現空間碎片的整理

varnish快取伺服器的搭建

1 在rhel6.5 server7 上安裝varnish,在server8和server9上安裝httpd服務。我用的版本 varnish 3.0.5 1.el6.x86 64 varnish 預設對外提供的埠是6081,自己本地的管理埠是6082 在配置檔案vcl檔案中定義多個後端主機 back...

高效能快取伺服器Varnish

varnish是一款高效能的 開源的反向 伺服器和快取伺服器,計算機系統的除了有記憶體外,還有cpu的l1 l2,甚至l3級別的快取,varnish的設計架構就是利用作業系統的快取機制處理訪問 vcl,即varnish configuration language,是varnish的配置語言。在執行...

php實現監控varnish快取伺服器的狀態

系統 centos 5.x 軟體 varnish 3.0.x ps 3.0以下的版本可以通過socket連線到varnish管理埠,通過stat命令檢視,3.0以上沒有stat命令,只能通過下面的方法解決。複製 如下 php outfile shell exec usr bin varnishsta...