
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、高性能http加速器varnish(管理維護篇)一、varnishd命令 varnish啟動的是/usr/local/varnish/sbin/varnishd,此指令參數(shù)較多,使用比較復(fù)雜,在指令行執(zhí)行 /usr/local/varnish/sbin/varnishd h 即可得到varnishd的具體使用,表2-6列出了varnishd常用參數(shù)的用法辦法和含義。 表1 指令參數(shù) 參數(shù)含義 -a aress:port 表示varnish對的監(jiān)聽地址及其端口 -b address:port 表示后端服務(wù)器地址及其端口 -d 表示用法debug調(diào)試模式 -f 指定varnish服務(wù)器的配置文件
2、-p param=value 指定服務(wù)器參數(shù),用來優(yōu)化varnish性能 -p file varnish進程pid文件存放路徑 -n dir 指定varnish的工作名目 -s kind,storageoptions 指定varnish緩存內(nèi)容的存放方式,常用的方式有: -s file, dir_or_file , size 。 其中 dir_or_file 指定緩存文件的存放路徑, size 指定緩存文件的大小 -t 指定缺省的ttl值 -t address:port 設(shè)定varnish的out 例如:-w5,51200,30,這里需要解釋下,在varnish2.0版本以后,最小啟動的線程數(shù)
3、不能設(shè)定過大,設(shè)置過大,會導(dǎo)致varnish運行異樣緩慢。 -v 顯示varnish版本號和版權(quán)信息 二、 配置varnish運行腳本 在安裝varnish一節(jié)中,已經(jīng)將varnish的管理腳本拷貝到了相應(yīng)的名目下,這里稍作修改即可用法,首先修改/etc/sysconfig/varnish文件,按照本章的實例,配置好的文件如下: nfiles=131072 memlock=82000 daemon_opts= -a 46:80 -t :3500 -f /usr/local/varnish/etc/vcl.conf -u varnish -g varni
4、sh -w 2,51200,10 -n /data/varnish/cache -s file, /data/varnish/cache/varnish_cache.data,4g 這里需要解釋的是,緩存文件 varnish_cache.data 在32位操作系統(tǒng)下,最大僅能支持2g,假如需要更大緩存文件則需要安裝64為linux操作系統(tǒng)。 接著需要修改的文件是/etc/init.d/varnish,找到如下行,改為相應(yīng)的路徑即可: ec= /usr/local/varnish/sbin/varnishd prog= varnishd config= /etc/sysconfig/varnis
5、h lockfile= /var/lock/bsys/varnish 其中, exec 用于指定varnishd的路徑,只需修改為varnish安裝路徑下對應(yīng)的varnishd文件即可。 config 用于指定varnish守護進程配置文件路徑。 兩個文件修改完畢,就可以授權(quán)、運行/etc/init.d/varnish腳本了,執(zhí)行如下: rootvarnish-server 755 /etc/init.d/varnish rootvarnish-server /etc/init.d/varnish usage:/etc/init.d/varnish start|stop|us|restart|
6、condrestart|y-restart|reload|force-reload 從輸出可知,此腳本功能強大,可以對varnish舉行啟動、關(guān)閉、查看狀態(tài)、重啟等操作。最后,啟動varnish: rootvarnish-server /etc/init.d/varnish start starting varnish http accelerator: ok 三、管理varnish運行日志 varnish是通過內(nèi)存分享的方式提供日志的,它提供了兩種日志輸出形式,分離是: 通過自帶的varnishlog命令可以獲得varnish具體的系統(tǒng)運行日志。 例如: rootvarnish-server
7、 /usr/local/varnish/bin/varnishlog -n /data/varnish/cache 0 cli - rd 0 cli - wr 200 pong 1279032175 1.0 0 cli - rd ping 0 cli - wr 200 pong 1279032178 1.0 通過自帶的varnishsa命令得到類似apache的combin輸出格式的日志。 例如: rootvarnish-server /usr/local/varnish/bin/varnishncsa -n /data/varnish/cache 也可以將日志輸出到一個文件中,通過 -w 參
8、數(shù)指定即可: rootvarnish-server /usr/local/varnish/bin/varnishncsa -n /data/varnish/cache -w /data/varnish/log/varnish.log varnish兩種日志輸出形式中,第一種在大多數(shù)狀況下并不是必需的,這里重點介紹下其次種日志輸出形式的配置方式。 下面編寫一個名為varnishncsa的shell腳本,并把此文件放到/etc/init.d名目下,varnishncsa腳本的完整內(nèi)容如下所示: !/bin/sh if $1 = start ;then /usr/local/varnish/bin/
9、varnishncsa -n /data/varnish/cache -f |/usr/sbin/rotatelogs /data/varnish/log/varnish.%y.%m.%d.%h.log 3600 480 elif $1 = stop ;then all varnishncsa ee echo $0 start|stop fi 在這個腳本中,通過管道方式把日志導(dǎo)入到 rotatelogs 中,而rotatelogs是一個文件分割工具,它可以通過指定時光或者大小等方式來分割日志文件,這樣就避開了日志文件過大造成的性能問題。 其中, 3600 是一個小時,也就是每個小時生成一個日志
10、文件, 480 是一個時區(qū)參數(shù),中國是第八時區(qū),相對于utc相差480分鐘,假如不設(shè)置480這個參數(shù),將導(dǎo)致日志記錄時光和服務(wù)器時光相差8小時。關(guān)于rotatelogs指令使用,這里不再具體敘述。 通過對varnish日志的監(jiān)控,可以知道varnish的運行狀態(tài)和狀況。 接著,將此腳本舉行授權(quán): rootvarnish-server chmod 755 /etc/init.d/varnishncsa 最后就可以通過如下方式,舉行啟動、關(guān)閉日志等操作了: rootvarnish-server /etc/init.d/varnishncsa start|stop 四、管理varnish 1、查看v
11、arnish進程 通過上面章節(jié)的講解,varnish已經(jīng)可以啟動起來了,執(zhí)行如下指令可以查看varnish是否正常啟動: rootvarnish-server ps -ef| varnish root 29615 1 0 00:20 pts/1 00:00:00 /usr/local/varnish/bin/varnishncsa -n /data/varnish/cache -f root 29616 1 0 00:20 pts/1 00:00:00 /usr/sbin/rotatelogs /data/varnish/log/varnish.%y.%m.%d.%h.log 3600 480
12、 root 29646 1 0 00:21 ? 00:00:00 /usr/local/varnish/sbin/varnishd -p /var/run/varnish.p -a 46:80 -t :3500 -f /usr/local/varnish/etc/vcl.conf -u varnish -g varnish -w 2,51200,10 -n /data/varnish/cache -s file,/data/varnish/cache/varnish_cache.data,4g varnish 29647 29646 0 00:21 ?
13、 00:00:00 /usr/local/varnish/sbin/varnishd -p /var/run/varnish.pid -a 46:80 -t :3500 -f /usr/local/varnish/etc/vcl.conf -u varnish -g varnish -w 2,51200,10 -n /data/varnish/cache -s file,/data/varnish/cache/varnish_cache.data,4g 從指令執(zhí)行結(jié)果可知,pid為29615和29616的進程是varnish的日志輸出進程,而pid為2
14、9646的進程是varnishd的主進程,并且派生出了一個pid為29647的子進程。這點跟apache類似。 假如varnish正常啟動的話,80端口和3500端口應(yīng)當(dāng)處于監(jiān)聽狀態(tài),通過如下指令可以查看: rootvarnish-server -antl|grep 3500 t 0 0 :3500 :* listen rootvarnish-server netstat -antl|grep 80 tcp 0 0 46:80 :* listen tcp 1 0 46:41782 192.168.12
15、.26:80 close_wait 其中,80端口為varnish的代理端口,3500為varnish的管理端口。 2、查看varnish緩存效果與狀態(tài) 可以通過掃瞄器拜訪對應(yīng)的網(wǎng)頁,查看varnish緩存的效果,假如varnish緩存勝利的話,其次次打開網(wǎng)頁的速度會顯然比第一次快,但是這種方式并不能夠徹低解釋問題,下面通過指令行方式,通過查看網(wǎng)頁頭來查看命中狀況,操作如下: rootvarnish-server curl -i http/1.1 200 ok server: apache/2.2.14 (unix) 8978 29.96 44.67 backend conn. recycle
16、s 6389 1.00 31.79 fetch with length 2630 32.96 13.08 fetch chunked 444 . . n struct sess_mem 23 . . n struct sess 64 . . n struct object 78 . . n struct objectcore 78 . . n struct objecthead 132 . . n struct smf 2 . . n small smf 3 . . n large free smf 6 . . n struct vbe_conn 14 . . n worker threads
17、 68 1.00 0.34 n worker threads created 0 0.00 0.00 n queued work requests 1201 11.99 5.98 n overflowed work requests 1 . . n backends 4 . . n expired objects 3701 . . n lru moved objects 118109 942.85 587.61 objects sent with 9985 71.91 49.68 total sessions 121820 953.84 606.07 total requests 這里需要注重
18、的幾個地方是: client connections accepted 表示客戶端向反向代理服務(wù)器勝利發(fā)送http哀求的總數(shù)量。 client requests received 表示到現(xiàn)在為止,掃瞄器向反向代理服務(wù)器發(fā)送http哀求的累積次數(shù),因為可能會用法長銜接,所以這個值普通會大于 client connections accepted 。 cache hits 表示反向代理服務(wù)器在緩存區(qū)中查找并且命中緩存的次數(shù)。 cache misses 表示挺直拜訪后端主機的哀求數(shù)量,也就是非命中數(shù)。 n struct object 表示當(dāng)前被緩存的數(shù)量。 n expired objects 表示過
19、期的緩存內(nèi)容數(shù)量。 n lru moved objects 表示被淘汰的緩存內(nèi)容個數(shù)。 五、管理varnish緩存內(nèi)容 varnish的一個顯著優(yōu)點是可以靈便的管理緩存內(nèi)容,而管理緩存主要的工作是如何快速有效的控制和清除指定的緩存內(nèi)容,varnish清除緩存相對照較復(fù)雜,不過幸運的是,可以通過varnish的管理端口發(fā)送purge命令來清除不需要的緩存。 下面列出了清除緩存內(nèi)容的指令格式: /usr/local/varnish/bin/varnishadm -t 46:3500 purge.url regexp 下面的指令可以列出最近清除的具體url列表: /usr/l
20、ocal/varnish/bin/varnishadm -t 46:3500 purge.list 舉例如下: (1)假如要清除 /usr/local/varnish/bin/varnishadm -t 46:3500 purge.url /a/2010.html (2)批量清除類似 /usr/local/varnish/bin/varnishadm -t 46:3500 purge.url /a/b/s.*$ (3)批量清除類似 /usr/local/varnish/bin/varnishadm -t 192.168.1
21、2.246:3500 purge.url /a/b.*$ (4)假如要清除全部緩存,可執(zhí)行如下指令: /usr/local/varnish/bin/varnishadm -t 46:3500 purge.url .*$ (5)查看最近清除的具體url列表 rootvarnish-server /usr/local/varnish/bin/varnishadm -t 46:3500 purge.list 0x2dc310c0 1278674980.497631 0 req.url /zm/a/web/2010/0423/64.html 0x2dc3
22、1100 1278674964.851327 1 req.url /zm/a/d.*$ 除了通過行方式清理varnish緩存外,還可以通過telnet到管理端口的方式來清理緩存頁面,例如: rootvarnish-server telnet 46 3500 trying 46. connected to localhost.localdomain (46). escape character is ''. 200 154 - varnish http accelerator cli. - type '
23、;help' for command list. type 'quit' to close cli session. purge.url /a/mz/2010/0421/11.html 這里是清除這個頁面緩存 200 0 purge.url /zm/a/d.*$ 這里是清除/zm/a/d/名目下全部以字母d開始的緩存頁面 200 0 對于系統(tǒng)管理人員或者運維人員來說,時刻了解varnish命中率是至關(guān)重要的,雖然varnish給出了很具體的統(tǒng)計數(shù)據(jù),但是統(tǒng)計的數(shù)據(jù)不是很直觀,并且必需登錄到varnish服務(wù)器才干查看,下面給出一個php程序,可以隨時隨地,并且十分清楚的
24、了解varnish系統(tǒng)的命中率相關(guān)狀況,程序如下: ?php / this is just a code snippet written by jason foxdie gaunt, its not meant to be exeed, it may work as-is, it may not. / i freely acknowledge this code is unoptimised but it has worked in practice for 6 months :) / lets define our connection details $adminhost = 127.0.
25、0.1 ; / varnish服務(wù)器的ip地址 $adminport = 3500 ; / varnish服務(wù)器管理端口 / pollserver(str) - this function connects to the management port, sends the command and returns the results, or an error on failure function pollserver($command) global $adminhost, $adminport; $socket = socket_create(af_inet, sock_stream,
26、 getprotobyname( tcp ); if (!socket_option($socket, sol_socket, so_rcvtimeo, array( sec = 5 , usec = 0 ) or (!socket_set_option($socket, sol_socket, so_sndtimeo, array( sec = 5 , usec = 0 ) die( unable to set socket timeout if (socket_connect($socket, $adminhost, $adminport) $data = ; if (!$socket)
27、die( unable to open socket to . $server . : . $port . n socket_write($socket, $command . n socket_recv($socket, $buffer, 65536, 0); $data .= $buffer; socket_close($socket); return $data; else return unable to connect: . socket_strerror(socket_last_error() . n / byterece(str) - this function converts
28、 a numeric value of bytes to a human readable foat and returns the result function bytereduce($bytes) / terabytes if ($bytes 1099511627776) return round($bytes / 1099511627776) . tb else if ($bytes 1073741824) return round($bytes / 1073741824) . gb else if ($bytes 1048576) return round($bytes / 1048
29、576) . mb else if ($bytes 1024) return round($bytes / 1024) . kb else return $bytes . b / this is where our main code starts echo div ' target='_blank'>reset: ul $stats = pollserver( stats if (substr($stats, 0, 3) = 200 ) / if request was leimate / clear all excessive white space and
30、by lines $stats = preg_replace( / 2,/ , | , $stats); $stats = preg_replace( /n|/ , n , $stats); $statsarray = explode( n , $stats); / removes the first call return value and splits by pipe array_shift($statsarray); $statistics = array(); foreach ($statsarray as $stat) $statval = explode( | , $stat);
31、 $statistics$statval1 = $statval0; ($stats, $statsarray, $stat, $statval); / start outputting statistics echo li . $statistics client connections accepted . clients served over . $statistics client requests received . requests echo li . round($statistics cache hits / $statistics client requests received ) * 10
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《環(huán)節(jié)動物門:枝角類Claera》課件示例
- 《商法學(xué)課件》課件
- 雙語客運值班員應(yīng)急管理課件
- 譚香玲項目一電力電子概述任務(wù)認(rèn)識電力電子器件課件
- 鐵路市場營銷鐵路客運市場細(xì)分的標(biāo)準(zhǔn)課件
- 《GB 18279.1-2015醫(yī)療保健產(chǎn)品滅菌 環(huán)氧乙烷 第1部分:醫(yī)療器械滅菌過程的開發(fā)、確認(rèn)和常規(guī)控制的要求》(2025版)深度解析
- 2025年云南交通職業(yè)技術(shù)學(xué)院單招考試題庫
- 標(biāo)準(zhǔn)部件四方采購協(xié)議
- 專業(yè)外墻涂料施工合同示范2025年
- 平價股權(quán)轉(zhuǎn)讓合同模版
- 高尿酸健康宣教課件
- 中班游戲教案《背夾球》
- 第5課《小心“馬路殺手”》課件
- 零星維修工程投標(biāo)方案技術(shù)標(biāo)
- 《花生膜下滴灌技術(shù)》課件
- 森林消防員勞務(wù)派遣服務(wù)投標(biāo)方案技術(shù)標(biāo)
- 婦科學(xué)婦科感染病
- 《內(nèi)科常見病的診治》課件
- 離心泵有效汽蝕余量計算公式
- 第十一章計劃調(diào)控法律制度
- 《我的家鄉(xiāng)日喀則》課件
評論
0/150
提交評論