日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

varnish的架构和日志

發(fā)布時(shí)間:2023/12/19 综合教程 41 生活家
生活随笔 收集整理的這篇文章主要介紹了 varnish的架构和日志 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

varnish的架構(gòu)和日志

varnish的架構(gòu)

	知道varnish的內(nèi)部結(jié)構(gòu)有兩個(gè)重要的原因:
		首先,架構(gòu)主要負(fù)責(zé)性能,其次,它影響你如何將Varnish集成到你自己的架構(gòu)中。
	主程序塊是Manager進(jìn)程,包含在二進(jìn)制程序varnishd中。
	Manager進(jìn)程的任務(wù)是將任務(wù)包括緩存委托給子進(jìn)程。
	Manager進(jìn)程確保每個(gè)任務(wù)總是有一個(gè)進(jìn)程。
	這樣設(shè)計(jì)的主要驅(qū)動(dòng)因素就是安全性。
	可以通過(guò)以下方式訪問(wèn)Manager的命令行界面(CLI):
		1)varnishadm管理界面部分,
		2)Varnish Agent vagent2
		3)Varnish管理控制臺(tái)(VAC)(通過(guò)vagent2)
	Varnish Agent vagent2是一個(gè)varnishd服務(wù)的開源HTTP REST接口,它提供遠(yuǎn)程控制和監(jiān)視服務(wù)。 
	vagent2提供了一種Web UI ,同時(shí)你可以編寫自己的UI。
	vagent2的一些功能是:VCL上傳,下載,保存(存儲(chǔ)到磁盤),參數(shù)查看,存儲(chǔ)(還沒(méi)有持續(xù)),顯示/清除應(yīng)急消息,開始/停止/查看varnishd服務(wù),取締功能,varnishstat 采用JSON格式。
	父進(jìn)程:manager
		Manager 進(jìn)程由root用戶所擁有,其主要功能有:
			應(yīng)用配置更改(從VCL文件和參數(shù))
			將任務(wù)委托給子進(jìn)程:Cacher和VCL到C編譯器(VCC)
			監(jiān)視varnish
			提供一個(gè)varnish命令行界面(CLI)
			初始化子進(jìn)程:Cacher
		Manager進(jìn)程每幾秒鐘檢查一次cacher是否仍然存在。
		如果Manager在由ping_interval給定的時(shí)間間隔內(nèi)沒(méi)有得到回復(fù),那么Manager將殺死Cacher并重新啟動(dòng)。
		如果Cacher意外退出,也會(huì)發(fā)生自動(dòng)重啟。
		你可以通過(guò)使用varnishadm ping來(lái)進(jìn)行手動(dòng)ping。
		子進(jìn)程的自動(dòng)重啟是Varnish的一種復(fù)原屬性,這個(gè)屬性可以確保即使Varnish包含一個(gè)可以危害子進(jìn)程的重要bug,子進(jìn)程通常也會(huì)在幾秒鐘內(nèi)重新啟動(dòng),您可以使用auto_restart參數(shù)切換此屬性。
		注意:
			即使您沒(méi)有察覺到長(zhǎng)時(shí)間的服務(wù)停機(jī)時(shí)間,您也應(yīng)該檢查varnish的子進(jìn)程是否正在重新啟動(dòng)。
			這一點(diǎn)很重要,因?yàn)樽舆M(jìn)程重啟會(huì)導(dǎo)致額外的加載時(shí)間,因?yàn)檫@段時(shí)間中varnishd會(huì)不斷清空緩存。
			自動(dòng)重啟的日志記錄在/var/log/syslog,為了驗(yàn)證子進(jìn)程是否被重啟,你也可以用varnishstat中的MAIN.uptime計(jì)數(shù)器來(lái)檢查它的生命周期。
	子進(jìn)程:cacher
		由于Cacher偵聽的是公共IP地址和已知端口,因此它暴露在惡意客戶端面前。
		因此,出于安全考慮,這個(gè)子進(jìn)程由非特權(quán)用戶擁有,并且沒(méi)有與其父進(jìn)程Manager進(jìn)行反向通信。
		Cacher的主要功能是:
			聽取客戶端的要求
			管理工作線程
			存儲(chǔ)緩存
			記錄流量
			更新統(tǒng)計(jì)的計(jì)數(shù)器
		Varnish使用工作區(qū)來(lái)減少每個(gè)線程在需要獲取或修改內(nèi)存時(shí)的爭(zhēng)用。
		有多個(gè)工作區(qū),但最重要的是會(huì)話工作區(qū),它用于處理會(huì)話數(shù)據(jù)。
		如在輸入到緩存之前將www.example.com更改為example.com,來(lái)減少重復(fù)。
		請(qǐng)注意,即使你擁有5 MB的會(huì)話工作區(qū)并使用1000個(gè)線程,但實(shí)際的內(nèi)存使用量也不是5 GB,虛擬內(nèi)存的使用量確實(shí)是5GB,但是除非你真的使用內(nèi)存,這不是問(wèn)題,您的內(nèi)存控制器和操作系統(tǒng)將跟蹤您實(shí)際使用的內(nèi)容。
		為了與系統(tǒng)的其他部分進(jìn)行通信,子進(jìn)程使用VSL訪問(wèn)文件系統(tǒng),這意味著如果一個(gè)線程需要記錄某些內(nèi)容,所需要做的就是設(shè)定一個(gè)鎖,然后寫內(nèi)容到到內(nèi)存區(qū)域,最后再解鎖。
		除此之外,每個(gè)工作線程都有一個(gè)緩存用于記錄日志數(shù)據(jù)以此來(lái)減少鎖定爭(zhēng)用。
		日志文件通常大約80MB,并分成兩部分:第一部分是計(jì)數(shù)器,第二部分是請(qǐng)求數(shù)據(jù),要查看實(shí)際數(shù)據(jù),可以采用工具解析VSL。
		由于日志數(shù)據(jù)并不意味著都是以原始形式寫入磁盤的,因此Varnish可以做得非常詳細(xì),這樣你可以使用其中一種日志解析工具來(lái)提取您想要的信息 - 即可以永久存儲(chǔ)也可以實(shí)時(shí)監(jiān)控Varnish。
		如果Cacher出現(xiàn)問(wèn)題,它會(huì)記錄一個(gè)詳細(xì)的應(yīng)急信息到syslog。
		當(dāng)測(cè)試時(shí),你可以使用varnishadm debug.panic.worker 命令或使用vanish agent web 頁(yè)面上的induce panic按鈕來(lái)減少varnishd服務(wù)的應(yīng)急信息。
	
	VCL編譯
		打印編譯為C語(yǔ)言的VCL代碼并退出:
			varnishd  - C  - f  < vcl_filename >
			用于檢查您的VCL代碼是否正確編譯。
		Varnish配置語(yǔ)言VCL配置了Varnish的高速緩存策,然后VCL被VCC進(jìn)程轉(zhuǎn)換為C,它是由一個(gè)普通的C編譯器gcc編譯,然后鏈接到正在運(yùn)行的Varnish實(shí)例中。
		由于VCL的編譯是在子進(jìn)程之外完成的,所以不會(huì)無(wú)意中加載格式不正確的VCL,從而影響正在運(yùn)行的Varnish實(shí)例。
		因此,運(yùn)行Varnish時(shí)更改配置非常方便,新的VCL的政策會(huì)立即生效,但是,所使用的舊配置緩存的對(duì)象可能會(huì)一直存在,直到它們沒(méi)有了舊的引用或新的配置對(duì)其執(zhí)行操作為止。
		一個(gè)已編譯的VCL文件將一直存在,直到完全重啟Varnish,或直到管理界面發(fā)出vcl.discard命令,在使用完編譯的VCL文件后你只能刪除。
		您可以通過(guò)讀取vcl.list參數(shù)來(lái)查看VCL引用的數(shù)量。
	
	VCL重載
		varnishd可以重新加載VCL程序,無(wú)需重新啟動(dòng),只是重新加載VCL編譯代碼。
			service varnish reload
			systemctl reload varnish
			varnish_reload_vcl
			varnishadm vcl.load <compiledVCL> <VCLsourcecode>
			varnishadm vcl.list
			varnishadm vcl.use

varnish日志

	varnish日志中記錄有請(qǐng)求,緩存和對(duì)varnish共享內(nèi)存日志(VSL)的響應(yīng)信息。
	內(nèi)存日志覆蓋有兩個(gè)效果,一方面沒(méi)有歷史數(shù)據(jù),但另一方面卻有大量的信息以非常快的速度獲得。
	當(dāng)然,仍然可以將日志存儲(chǔ)在文件中。
	varnish會(huì)生成大量的數(shù)據(jù),因此它不會(huì)將日志默認(rèn)寫入磁盤,而只會(huì)記錄到內(nèi)存中。
	如果需要記錄日志到磁盤上,可以通過(guò)在/etc/default/varnishlog和/etc/default/varnishncsa中分別設(shè)置VARNISHNCSA_ENABLED=1來(lái)實(shí)現(xiàn)。

日志工具

	顯示詳細(xì)日志:	
		varnishlog	
			用于訪問(wèn)特定的數(shù)據(jù),它提供了特定客戶的信息和要求。	
		varnishncsa 	
			以NCSA通用日志格式顯示varnish訪問(wèn)日志。	
		varnishtest 	
			允許顯示測(cè)試中的日志記錄和計(jì)數(shù)器。	
	統(tǒng)計(jì)工具:	
		varnishstat	
			用于訪問(wèn)全局計(jì)數(shù)器,不讀取varnish日志中的條目。	
		varnishtop 	
			讀取Varnish日志并呈現(xiàn)最常出現(xiàn)的日志條目的不斷更新的列表。	
		varnishhist	
			讀取Varnish日志,并顯示一個(gè)連續(xù)更新的直方圖,顯示最后N個(gè)請(qǐng)求的處理分布情況。	

日志布局

	varnish日志事務(wù)處理如圖所示,varnishlog是最常用的工具之一,并采用了按TCP會(huì)話,前端或后端工作者分組的事務(wù)機(jī)制重新排序事務(wù)。
	varnishlog的各種參數(shù)是為幫助你找到你想要的東西。使用varnishlog可以有效地過(guò)濾varnish工作中產(chǎn)生的大量日志數(shù)據(jù)。

事務(wù)處理

	varnishlog -g <session|request|vxid|raw> -d	
	Varnish Transaction IDs (VXIDs,varnish 事務(wù)id)被應(yīng)用于大量不同種類的工作項(xiàng)目中。	
	事務(wù)類型:	
		session:tcp 會(huì)話	
		request:前端或后端工作者處理的事務(wù)	
	varnish默認(rèn)按照VXID來(lái)分組,1是后端請(qǐng)求BeReq,2是客戶端請(qǐng)求Request,3是會(huì)話Session。	
	事務(wù)組
		事務(wù)組是分層的
		層級(jí)和關(guān)系
			Level 1: Client request (cache miss)
			  Level 2: Backend request
			  Level 2: ESI subrequest (cache miss)
			    Level 3: Backend request
			    Level 3: Backend request (VCL restart)
			    Level 3: ESI subrequest (cache miss)
			      Level 4: Backend request
			  Level 2: ESI subrequest (cache hit)

總結(jié)

以上是生活随笔為你收集整理的varnish的架构和日志的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。