亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Varnish的高負(fù)載Drupal網(wǎng)站研究

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

        摘 要:Drupal是使用PHP語(yǔ)言編寫(xiě)的開(kāi)源內(nèi)容管理框架(CMF),它由內(nèi)容管理系統(tǒng)(CMS)和PHP開(kāi)發(fā)框架(Framework)共同構(gòu)成。而Varnish是一款優(yōu)秀的反向代理服務(wù)器,本文就Varnish的基本使用方法配合Drupal網(wǎng)站做出了詳細(xì)的闡述分析。

        關(guān)鍵詞:varnish;VCL;grace mode;saint mode

        中圖分類(lèi)號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A

        1 引言

        網(wǎng)站實(shí)現(xiàn)以Drupal為框架開(kāi)發(fā)是一個(gè)較好的選擇,若要實(shí)現(xiàn)高負(fù)載Varnish是一個(gè)不錯(cuò)的選擇,通過(guò)其部署相關(guān)運(yùn)行環(huán)境,才能使得網(wǎng)站運(yùn)營(yíng)更加正常高效。

        2 Varnish基本結(jié)構(gòu)

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

        /etc/sysconfig/varnish 【CentOS】 存放varnish服務(wù)器運(yùn)行的參數(shù)

        /etc/default/varnish 【Ubuntu】 存放varnish服務(wù)器運(yùn)行的參數(shù)

        /usr/sbin/varnishd varnish服務(wù)器執(zhí)行文件

        /etc/init.d/varnish 運(yùn)行程序

        3 Varnish的相關(guān)命令

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

        varnishadm 管理Varnish后端的工具 telnet。

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

        varnishlog 實(shí)時(shí)顯示varnish的請(qǐng)求日志。

        varnishncsa 以Apache標(biāo)準(zhǔn)的格式combined輸出日志。

        varnishstat 查看狀態(tài)、參數(shù)等。

        varnishtop 類(lèi)似top工具,查看varnish相關(guān)進(jìn)程的資源、運(yùn)行等狀況。

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

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

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

        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可能需要認(rèn)證,最簡(jiǎn)單的辦法就是在varnish啟動(dòng)的時(shí)候取掉相應(yīng)的參數(shù)。

        4 Varnish的緩存方式

        Malloc (malloc) 通過(guò)malloc獲取內(nèi)存,簡(jiǎn)單,速度快。

        Mmap file (file) 創(chuàng)建文件緩存。

        這是varnish緩存的兩種方式,可以在啟動(dòng)的時(shí)候通過(guò)參數(shù)指定。

        5 Varnish處理流程

        首次請(qǐng)求時(shí)過(guò)程如下[2]:

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

        緩存后再次請(qǐng)求:

        recv->hash->hit->deliver;fetch的過(guò)程沒(méi)了,這就是我們要做的,把要緩存的頁(yè)面保存下來(lái)。

        直接交給后端pass的情況:

        recv->hash->pass->fetch->deliver;直接從后端獲取數(shù)據(jù)后發(fā)送給客戶(hù)端,此時(shí)Varnish相當(dāng)于一個(gè)中轉(zhuǎn)站,只負(fù)責(zé)轉(zhuǎn)發(fā)。

        6 Varnish負(fù)載均衡

        通過(guò)把多臺(tái)backends聚合成一個(gè)組,這些組被叫做directors。這樣可以增強(qiáng)性能和彈力[3]。本文定義多個(gè)backends和多個(gè)group在同一個(gè)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;

        }

        在之前的兩個(gè)后端服務(wù)器上加上健康檢查。

        backend server1 {

        .host = \"192.168.0.1\" ;

        .port = \"8000\" ;

        .probe = {

        .url = \"/\"; #哪個(gè) url需要varnish請(qǐng)求。

        .interval = 5s; #檢查的間隔時(shí)間。

        .timeout = 1 s; #等待多長(zhǎng)時(shí)間探針超時(shí)。

        .window = 5; #維持5個(gè)sliding window的結(jié)果。

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

        }

        }

        7 VCL以及基本對(duì)象

        request 從客戶(hù)端進(jìn)來(lái)。

        responses 從后端服務(wù)器過(guò)來(lái)。

        object 存儲(chǔ)在cache中。

        8 VCL使用語(yǔ)言

        req 請(qǐng)求目標(biāo),當(dāng)varnish接收到一個(gè)請(qǐng)求,這時(shí)req object就被創(chuàng)建了,你在vcl_recv中的大部分工作,都是在req object上展開(kāi)的。

        beresp 后端服務(wù)器返回的目標(biāo),它包含返回的頭信息,你在vcl_fetch中的大部分工作都是在beresp object上開(kāi)展的。

        obj 被cache的目標(biāo),只讀的目標(biāo)被保存于內(nèi)存中,obj.ttl的值可修改,其他的只能讀[4]。

        9 Grace mode

        如果后端需要很長(zhǎng)時(shí)間來(lái)生成一個(gè)對(duì)象,這里有一個(gè)線(xiàn)程堆積的風(fēng)險(xiǎn)。為了避免這種情況使用Grace。當(dāng)同時(shí)有多個(gè)請(qǐng)求過(guò)來(lái)的時(shí)候,varnish只發(fā)送一個(gè)請(qǐng)求到后端服務(wù)器,在“set beresp.grace = 30m; ”時(shí)間內(nèi)復(fù)制舊的請(qǐng)求結(jié)果給客戶(hù)端。

        10 Saint mode

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

        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\";

        }

        #現(xiàn)在添加一個(gè)新的backend服務(wù)器

        backend test {

        .host = \"192.168.0.12\";

        .port = \"8000\";

        }

        #要定義特殊的url被發(fā)送到哪里

        sub vcl_recv {

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

        set req.backend = test;

        } else {

        set req.backend = default;

        }

        }

        11 注意事項(xiàng)

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

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

        (2) Varnish 2.x有Cookie的問(wèn)題,當(dāng)Cookie過(guò)大,會(huì)產(chǎn)生503錯(cuò)誤,升級(jí)varnish或者減少set_cookie的操作。

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

        12 總結(jié)

        至此,通過(guò)Varnish基本的布置,配合Drupal模塊模式不難構(gòu)建出一個(gè)高性能的網(wǎng)站。

        參考文獻(xiàn)

        [1] 彭輝.Varnish的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)光盤(pán)與軟件,2012,2(3):22-23.

        [2] 楊志成.基于Drupal協(xié)議的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2013,1(4):15-16.

        [3] 吳偉易.Varnish關(guān)鍵技術(shù)的研究以及網(wǎng)站的實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2012,4(2):26-27.

        [4] 林建勝.Drupal網(wǎng)站模式的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)軟件與發(fā)展.2012,3(2):34-36.

        作者簡(jiǎn)介:

        陳 浩(1979-),男,碩士,講師,實(shí)驗(yàn)師.研究領(lǐng)域:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的研究與應(yīng)用.

        麻豆国产人妻欲求不满谁演的| 伊人加勒比在线观看视频| 97人伦影院a级毛片| 久久久久久久人妻无码中文字幕爆| 国产哟交泬泬视频在线播放 | 99精品久久99久久久久| 日本乱偷人妻中文字幕在线| 伊人久久综在合线亚洲不卡| 亚洲视频精品一区二区三区| 国产在线观看自拍av| 亚洲av日韩av无码污污网站| 亚洲成a人片在线网站| 国产精品人成在线765| 国产一区亚洲二区三区| 亚洲av无码av男人的天堂| 国产AⅤ无码久久丝袜美腿| 日本黄色高清视频久久| 亚洲av日韩av激情亚洲| 国内精品伊人久久久久影院对白| 精品久久综合一区二区| 中文字幕精品一区二区三区av| 亚洲精品一区二区国产精华液| 欧美黑人粗暴多交高潮水最多| 午夜亚洲国产精品福利| 91成人国产九色在线观看| 亚洲愉拍99热成人精品热久久| 日韩毛片在线| 亚洲国产成人精品久久成人| 国产三级精品视频2021| 亚洲av电影天堂男人的天堂| 91福利精品老师国产自产在线| 国产一区二区三区的区| 国产边摸边吃奶叫床视频| 日韩欧美中文字幕公布| 亚洲av成人无网码天堂| 亚洲av乱码一区二区三区林ゆな| 中国猛少妇色xxxxx| 国产精品nv在线观看| 青青草视频在线观看色| 国产精品_国产精品_k频道| 青青青伊人色综合久久亚洲综合|