亚洲免费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)用.

        国产成人www免费人成看片| 蜜桃av噜噜一区二区三区9| 四虎国产成人永久精品免费| 乱人伦中文无码视频在线观看| 96免费精品视频在线观看| 亚洲国产精品免费一区| 亚洲熟女少妇一区二区三区青久久| 亚洲av无码一区二区一二区| 乌克兰少妇xxxx做受野外| 欧美性久久| 午夜av福利亚洲写真集| 真实夫妻露脸爱视频九色网| 成人无码α片在线观看不卡| 中文字幕日韩三级片| 成年午夜无码av片在线观看| 亚洲国产精品久久久性色av| 水蜜桃一二二视频在线观看免费| 蜜桃传媒免费在线观看| 亚洲av精品一区二区三区| 亚洲级αv无码毛片久久精品| 亚洲亚洲亚洲亚洲亚洲天堂| 午夜免费观看日韩一级片| 亚洲成a人片在线观看无码3d| 国产亚洲精品aaaa片app| 99热成人精品国产免| 女女同性av一区二区三区免费看| 在线观看国产激情视频| 曰韩亚洲av人人夜夜澡人人爽| 欧美激情区| 在线一区二区三区免费视频观看| 久久亚洲道色综合久久| 中文字幕一区二区三区乱码| 免费二级毛片在线播放| 色婷婷在线一区二区三区| 久久人人爽爽爽人久久久| 国产欧美日韩在线观看| 和少妇人妻邻居做爰完整版| 精品亚洲国产成人av色哟哟| 18分钟处破好疼哭视频在线观看| 岛国熟女一区二区三区| 久草中文在线这里只有精品 |