999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Varnish的高負載Drupal網站研究

2013-12-31 00:00:00陳浩
軟件工程 2013年11期

摘 要:Drupal是使用PHP語言編寫的開源內容管理框架(CMF),它由內容管理系統(CMS)和PHP開發框架(Framework)共同構成。而Varnish是一款優秀的反向代理服務器,本文就Varnish的基本使用方法配合Drupal網站做出了詳細的闡述分析。

關鍵詞:varnish;VCL;grace mode;saint mode

中圖分類號:TP311.52 文獻標識碼:A

1 引言

網站實現以Drupal為框架開發是一個較好的選擇,若要實現高負載Varnish是一個不錯的選擇,通過其部署相關運行環境,才能使得網站運營更加正常高效。

2 Varnish基本結構

/etc/varnish/ 存放varnish VCL配置文件

/etc/sysconfig/varnish 【CentOS】 存放varnish服務器運行的參數

/etc/default/varnish 【Ubuntu】 存放varnish服務器運行的參數

/usr/sbin/varnishd varnish服務器執行文件

/etc/init.d/varnish 運行程序

3 Varnish的相關命令

本文用到了以下幾個主要的varnish管理命令[1]。

varnishadm 管理Varnish后端的工具 telnet。

varnishhist 查看Varnish命中的工具 運行可以看到一張柱狀描繪圖,|表示緩存命中,#表示未命中,橫向代表時間。

varnishlog 實時顯示varnish的請求日志。

varnishncsa 以Apache標準的格式combined輸出日志。

varnishstat 查看狀態、參數等。

varnishtop 類似top工具,查看varnish相關進程的資源、運行等狀況。

varnishncsa 將Varnish的log以Apache的格式輸出,varnishlog以原始方式顯示Varnish的日志。

管理varnish以及清除內存等操作雖然可以使用varnishadm,但是本文使用telnet,一個交互的管理界面。

示例: telnet 127.0.0.1 6082之后,輸入help會顯示所有可用命令。

help [command]

ping [timestamp]

status

start

stop

stats

vcl.load

vcl.inline

vcl.use

vcl.discard

vcl.list

vcl.show

param.show [-l] []

param.set

quit

purge.url

purge.hash

purge [ ]...

purge.list

重新加載Varnish配置文件

telnet 127.0.0.1 6082

vcl.load newconfig /data/app/varnish/etc/varnish/default.vcl

vcl.use newconfig

注意:varnish 的CLI可能需要認證,最簡單的辦法就是在varnish啟動的時候取掉相應的參數。

4 Varnish的緩存方式

Malloc (malloc) 通過malloc獲取內存,簡單,速度快。

Mmap file (file) 創建文件緩存。

這是varnish緩存的兩種方式,可以在啟動的時候通過參數指定。

5 Varnish處理流程

首次請求時過程如下[2]:

recv->hash->miss->fetch->deliver

緩存后再次請求:

recv->hash->hit->deliver;fetch的過程沒了,這就是我們要做的,把要緩存的頁面保存下來。

直接交給后端pass的情況:

recv->hash->pass->fetch->deliver;直接從后端獲取數據后發送給客戶端,此時Varnish相當于一個中轉站,只負責轉發。

6 Varnish負載均衡

通過把多臺backends聚合成一個組,這些組被叫做directors。這樣可以增強性能和彈力[3]。本文定義多個backends和多個group在同一個directors。

backend server1 {

.host = \"192.168.0.1\" ;

.port = \"8080\" ;

}

backend server2 {

.host = \"192.168.0.2\" ;

.port = \"8080\" ;

}

director drupal001 round-robin {

{ .backend = server1; }

{ .backend = server2; }

}

sub vcl_recv {

if (req.http.host !~ \"www\.drupal001\.com$\"){

error 404 \"Unknown HostName!\";

}

set req.backend = drupal001;

}

在之前的兩個后端服務器上加上健康檢查。

backend server1 {

.host = \"192.168.0.1\" ;

.port = \"8000\" ;

.probe = {

.url = \"/\"; #哪個 url需要varnish請求。

.interval = 5s; #檢查的間隔時間。

.timeout = 1 s; #等待多長時間探針超時。

.window = 5; #維持5個sliding window的結果。

.threshold = 3; #至少有三次window是成功的,就宣告bachend健康。

}

}

7 VCL以及基本對象

request 從客戶端進來。

responses 從后端服務器過來。

object 存儲在cache中。

8 VCL使用語言

req 請求目標,當varnish接收到一個請求,這時req object就被創建了,你在vcl_recv中的大部分工作,都是在req object上展開的。

beresp 后端服務器返回的目標,它包含返回的頭信息,你在vcl_fetch中的大部分工作都是在beresp object上開展的。

obj 被cache的目標,只讀的目標被保存于內存中,obj.ttl的值可修改,其他的只能讀[4]。

9 Grace mode

如果后端需要很長時間來生成一個對象,這里有一個線程堆積的風險。為了避免這種情況使用Grace。當同時有多個請求過來的時候,varnish只發送一個請求到后端服務器,在“set beresp.grace = 30m; ”時間內復制舊的請求結果給客戶端。

10 Saint mode

需要通知varnish使用更加優雅的方式處理它,這種方式叫神圣模式(saint mode)。Saint mode允許拋棄一個后端服務器或者另一個嘗試的后端服務器或者cache中服務陳舊的內容。

sub vcl_fetch {

if (beresp.status == 500) {

set beresp.saintmode = 10s;

restart;

}

set beresp.grace = 5m;

}

Varnish代理

########

backend default {

.host = \"192.168.0.12\";

.port = \"8080\";

}

#現在添加一個新的backend服務器

backend test {

.host = \"192.168.0.12\";

.port = \"8000\";

}

#要定義特殊的url被發送到哪里

sub vcl_recv {

if (req.url ~ \"^/abcd/\") {

set req.backend = test;

} else {

set req.backend = default;

}

}

11 注意事項

(1) Varnish的不同版本的配置不同。

比如,在2.x 直接用ESI表示啟用ESI,在3.x就不是了。

(2) Varnish 2.x有Cookie的問題,當Cookie過大,會產生503錯誤,升級varnish或者減少set_cookie的操作。

(3) 啟動varnishd的時候如果選用-s file方式,每次會重新建立緩存文件,而原來的文件不會刪除,因此注意清除這些遺留文件。

12 總結

至此,通過Varnish基本的布置,配合Drupal模塊模式不難構建出一個高性能的網站。

參考文獻

[1] 彭輝.Varnish的研究與實現[J].計算機光盤與軟件,2012,2(3):22-23.

[2] 楊志成.基于Drupal協議的研究與實現[J].計算機工程與應用,2013,1(4):15-16.

[3] 吳偉易.Varnish關鍵技術的研究以及網站的實現[J].電腦知識與技術,2012,4(2):26-27.

[4] 林建勝.Drupal網站模式的研究與實現[J].計算機軟件與發展.2012,3(2):34-36.

作者簡介:

陳 浩(1979-),男,碩士,講師,實驗師.研究領域:計算機網絡技術的研究與應用.

主站蜘蛛池模板: 国产精品久线在线观看| 一本无码在线观看| 91啪在线| 亚洲无限乱码| 久操线在视频在线观看| 国产熟睡乱子伦视频网站| 国产欧美视频一区二区三区| 色婷婷电影网| 亚洲无线观看| 精品人妻一区无码视频| a级高清毛片| 国产精品久久久精品三级| 国产色伊人| а∨天堂一区中文字幕| 久久综合九九亚洲一区| 熟女日韩精品2区| 无码精油按摩潮喷在线播放| 99re66精品视频在线观看| 亚洲欧洲日韩久久狠狠爱| 欧美性精品| a免费毛片在线播放| 亚洲高清中文字幕在线看不卡| 国产精品99一区不卡| 欧美日韩久久综合| 99偷拍视频精品一区二区| 国产一区二区在线视频观看| 成人欧美日韩| 国产成人麻豆精品| 成人一区在线| 亚洲天堂精品视频| 乱系列中文字幕在线视频| 99热精品久久| 91视频国产高清| 久草青青在线视频| 精品少妇人妻av无码久久| 国产精品播放| 黄色福利在线| 久久中文字幕不卡一二区| 99爱在线| 亚洲三级色| 十八禁美女裸体网站| 99re这里只有国产中文精品国产精品| 99精品影院| 欧美在线观看不卡| 五月综合色婷婷| 色香蕉影院| 少妇人妻无码首页| 欧美一级色视频| 欧美在线三级| 九九免费观看全部免费视频| 女人18毛片久久| 日韩在线视频网站| 国产噜噜噜| 国产无人区一区二区三区| 久久综合九色综合97婷婷| 草逼视频国产| 亚洲热线99精品视频| 69综合网| 午夜啪啪网| www欧美在线观看| www.国产福利| 日韩成人在线一区二区| 久久精品中文无码资源站| 国产在线视频欧美亚综合| 日韩一区二区在线电影| 日韩精品无码免费专网站| 日韩毛片免费观看| 久久黄色视频影| 国产精品成人免费视频99| 亚洲色图欧美一区| 538精品在线观看| Jizz国产色系免费| 久久www视频| 久久久噜噜噜| 免费在线国产一区二区三区精品| 免费全部高H视频无码无遮掩| 国产精品女在线观看| аⅴ资源中文在线天堂| 中文毛片无遮挡播放免费| 香蕉综合在线视频91| 国产成人综合在线观看| 国产精品99r8在线观看|