但與老牌的squid相比,各有各的優(yōu)劣勢,網(wǎng)上大量的相對比較只是在其個人對自己熟悉的應(yīng)用 " /> 亚洲成成品网站有线,全部免费国产潢色一级,狂野猛交xxxx吃奶

一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

解析Linux下Varnish緩存的配置優(yōu)化

Varnish是一款高性能的開源HTTP加速器,挪威最大的在線報紙 Verdens Gang 使用3臺Varnish代替了原來的12臺Squid,性能比以前更好。

但與老牌的squid相比,各有各的優(yōu)劣勢,網(wǎng)上大量的相對比較只是在其個人對自己熟悉的應(yīng)用的最大使用上的發(fā)揮而已,可能squid到了有能力的人手上才足以發(fā)揮最強(qiáng)大的威力
Varnish采用了“Visual Page Cache”技術(shù),在內(nèi)存的利用上,Varnish比Squid具有優(yōu)勢,它避免了Squid頻繁在內(nèi)存、磁盤中交換文件,性能要比Squid高。

通過Varnish管理端口,可以使用正則表達(dá)式快速、批量地清除部分緩存,這一點(diǎn)是Squid不能具備的。
本人就varnish的一些見解與配置方法做簡單的介紹與筆記

實(shí)驗(yàn)環(huán)境:Red Hat Enterprise Linux Server release 5.4 (Tikanga)
內(nèi)核2.6.18-164.el5
yum install pcre-devel     ##預(yù)先安裝一個軟件包,不然會提示錯誤
tar zxvf varnish-2.1.3.tar.gz
cd varnish-2.1.3
./configure --prefix=/usr/local/varnish-2.1.3
make && make install
編輯配置文件,有模版,但太多注釋,最好自己新建一個
vim /usr/local/varnish-2.1.3/etc/varnish/varnish.conf  
############下面附上配置文件的內(nèi)容及注釋#######################
#http請求處理過程
#1,receive請求入口狀態(tài),根據(jù)vcl判斷pass還是lookup本地查詢
#lookup,在hash表中查找數(shù)據(jù),若找到則進(jìn)入hit狀態(tài),否則進(jìn)入fetch狀態(tài)
#pass,選擇后臺,進(jìn)入fetch狀態(tài)
#fetch,對請求進(jìn)行后端的獲取,發(fā)送請求,獲得數(shù)據(jù),并進(jìn)行本地存儲
#deliver,將數(shù)據(jù)發(fā)送給客戶端,進(jìn)入done
#done,處理結(jié)束
##########配置后端服務(wù)器##############
復(fù)制代碼 代碼如下:
backend linuxidc01 {
      .host = "192.168.1.142";
      .port = "7070";
      .probe = {
      .timeout = 5s;        
      .interval = 2s;         
      .window = 10;        
      .threshold = 8;    
      }
   }
backend linuxidc02 {
      .host = "192.168.1.141";
      .port = "7070";
      .probe = {
      .timeout = 5s;
      .interval = 2s;
      .window = 10;
      .threshold = 8;
      }
   }

##############配置后端服務(wù)器組,進(jìn)行健康檢測6秒,使用random方式設(shè)置權(quán)重########
#########另一種方式round-robin則默認(rèn)輪詢機(jī)制####################
復(fù)制代碼 代碼如下:
director linuxidc15474 random
        { .retries = 6;
            { .backend = linuxidc02;
              .weight = 2;
             }
            { .backend = linuxidc01;
               .weight = 2;
            }
        }

##########定義訪問列表,允許下列地址清除varnish緩存#######################
復(fù)制代碼 代碼如下:
acl local  {
         "localhost";
         "127.0.0.1";
          }

########從url判斷針對哪類后面服務(wù)器及緩存配置############################
復(fù)制代碼 代碼如下:
sub vcl_recv
{
       if (req.http.host ~ "^linuxidc15474.vicp.NET")  #匹配域名跳轉(zhuǎn)后臺服務(wù)器
            { set req.backend = linuxidc15474; }
         else { error 404 "Unknown HostName!"; }
        if (req.request == "PURGE")    #不允許非訪問控制列表內(nèi)的IP清除varnish緩存
             { if (!client.ip ~ local)
                 {
                  error 405 "Not Allowed."; 
                  return (lookup);  
                 }
             }
        #清除url中有jpg等文件的cookie
        if (req.request == "GET" && req.url ~ "/.(jpg|png|gif|swf|jpeg|ico)$")
            {
              unset req.http.cookie;
             }  
        #判斷req.http.X-Forwarded-For 如果前端有多重反向代理,這樣可以獲取客戶端IP地址。
        if (req.http.x-forwarded-for)
           {
              set req.http.X-Forwarded-For = req.http.X-Forwarded-For ", " client.ip;
           }
        else { set req.http.X-Forwarded-For = client.ip; }
##varnish實(shí)現(xiàn)圖片的防盜鏈
#        if (req.http.referer ~ "http://.*)
#          {
#             if ( !(req.http.referer ~ "http://.*vicp/.NET" ||
#                   req.http.referer ~ "http://.*linuxidc15474/.NET" ) )
#                 {
#                   set req.http.host = "linuxidc15474.vicp.NET";
#                   set req.url = "/referer.jpg";
#                 }
#              return(lookup);
#          }
#         else {return(pass);}
       if (req.request != "GET" &&
           req.request != "HEAD" &&
           req.request != "PUT" &&
           req.request != "POST" &&
           req.request != "TRACE" &&
           req.request != "OPTIONS" &&
           req.request != "DELETE")
        { return (pipe); }
        #對非GET|HEAD請求的直接轉(zhuǎn)發(fā)給后端服務(wù)器
        if (req.request != "GET" && req.request != "HEAD")
            { return (pass); }
        ##對GET請求,且url里以.php和.php?結(jié)尾的,直接轉(zhuǎn)發(fā)給后端服務(wù)器
        if (req.request == "GET" && req.url ~ "/.(php)($|/?)")
            { return (pass); }
        ##對請求中有驗(yàn)證及cookie,直接轉(zhuǎn)發(fā)給后端服務(wù)器
        if (req.http.Authorization || req.http.Cookie)
            { return (pass);}
         {
           ##除以上的訪問請求,從緩存中查找
           return (lookup);
         }
       ##指定的font目錄不進(jìn)行緩存
       if (req.url ~ "^/fonts/")
           { return (pass); }
}
sub vcl_pipe
            { return (pipe); }
##進(jìn)入pass模式,請求被送往后端,后端返回數(shù)據(jù)給客戶端,但不進(jìn)入緩存處理
sub vcl_pass
            { return (pass); }
sub vcl_hash
      {
          set req.hash += req.url;
        if (req.http.host)
           { set req.hash += req.http.host; }
        else { set req.hash += server.ip; }
      return (hash);
      }
##在lookup后如果在cache中找到請求的緩存,一般以下面幾個關(guān)鍵詞結(jié)束
sub vcl_hit
          {
              if (!obj.cacheable)
                { return (pass); }
               return (deliver);
          }
##lookup后沒有找到緩存時調(diào)用,以下面幾個關(guān)鍵詞結(jié)束,及調(diào)用fetch參數(shù)重新測試是否加入緩存
sub vcl_miss
     { return (fetch); }
#讓varnish服務(wù)器緩存的類型,從后端取得數(shù)據(jù)后調(diào)用
sub vcl_fetch
  {    if (!beresp.cacheable)
            { return (pass); }
        if (beresp.http.Set-Cookie)
           { return (pass); }
       ##WEB服務(wù)器指明不緩存的內(nèi)容,varnish服務(wù)器不緩存
       if (beresp.http.Pragma ~ "no-cache" || beresp.http.Cache-Control ~ "no-cache" || beresp.http.Cache-Control ~ "private")
          { return (pass); }
       ##對訪問中g(shù)et有包含jpg,png等格式的文件進(jìn)行緩存,緩存時間為7天,s為秒
      if (req.request == "GET" && req.url ~ "/.(js|css|mp3|jpg|png|gif|swf|jpeg|ico)$")
         { set beresp.ttl = 7d; }
      ##對訪問get中包含htm等靜態(tài)頁面,緩存300秒
      if (req.request == "GET" && req.url ~ "http://[0-9]/.htm$")
         { set beresp.ttl = 300s; }
           return (deliver);
   }
####添加在頁面head頭信息中查看緩存命中情況########
sub vcl_deliver
 {
       set resp.http.x-hits = obj.hits ;
       if (obj.hits > 0)
              { set resp.http.X-Cache = "HIT cqtel-bbs"; }
       else { set resp.http.X-Cache = "MISS cqtel-bbs"; }
  }

#########################以上為 varnish的配置文件##########################
創(chuàng)建用戶:
groupadd www
useradd www -g www
創(chuàng)建 varnish_cache的緩存位置
mkdir /data/varnish_cache
啟動varnish
ulimit -SHn 8192   ####設(shè)置文件描述符,因?yàn)槲业臋C(jī)子性能并不好,可以按照自己的配置去設(shè)置
/usr/local/varnish-2.1.3/sbin/varnishd -u www -g www -f /usr/local/varnish-2.1.3/etc/varnish/varnish.conf -a 0.0.0.0:80 -s file,/data/varnish_cache/varnish_cache.data,100M -w 1024,8192,10 -t 3600 -T 127.0.0.1:3500
####-u 以什么用運(yùn)行 -g 以什么組運(yùn)行 -f varnish配置文件 -a 綁定IP和端口 -s varnish緩存文件位置與大小 -w 最小,最大線程和超時時間 -T varnish管理端口,主要用來清除緩存
#結(jié)束varnishd進(jìn)程
pkill varnishd
啟動varnishncsa用來將Varnish訪問日志寫入日志文件:
/usr/local/varnish-2.1.3/bin/varnishncsa -w /data/logs/varnish.log &
每天0點(diǎn)運(yùn)行,按天切割Varnish日志,生成一個壓縮文件,同時刪除上個月舊日志的腳本(/var/logs/cutlog.sh):
vim /usr/local/varnish-2.1.3/etc/varnish/cut_varnish_log.sh
寫入以下腳本:
#!/bin/sh
# This file run at 00:00
date=$(date -d "yesterday" +"%Y-%m-%d")
pkill -9 varnishncsa
mv /data/logs/varnish.log /data/logs/${date}.log
/usr/local/varnish-2.1.3/bin/varnishncsa  -w /data/logs/varnish.log &
mkdir -p /data/logs/varnish/
gzip -c /data/logs/${date}.log > /data/logs/varnish/${date}.log.gz
rm -f /data/logs/${date}.log
rm -f /data/logs/varnish/$(date -d "-1 month" +"%Y-%m*").log.gz
定時任務(wù):
crontab -e
00 00 * * * /usr/local/varnish-2.1.3/etc/varnish/cut_varnish_log.sh

優(yōu)化Linux內(nèi)核參數(shù)
vi /etc/sysctl.conf
NET.ipv4.tcp_fin_timeout = 30
NET.ipv4.tcp_keepalive_time = 300
NET.ipv4.tcp_syncookies = 1
NET.ipv4.tcp_tw_reuse = 1
NET.ipv4.tcp_tw_recycle = 1
NET.ipv4.ip_local_port_range = 5000    65000
使配置生效
/sbin/sysctl -p

通過Varnish管理端口,使用正則表達(dá)式批量清除緩存
清除所有緩存
/usr/local/varnish-2.1.3/bin/varnishadm -T 127.0.0.1:3500 url.purge *$
清除image目錄下所有緩存
/usr/local/varnish-2.1.3/bin/varnishadm -T 127.0.0.1:3500 url.purge /image/
127.0.0.1:3500 為被清除緩存服務(wù)器地址 www.linuxidc.com 為被清除的域名 /static/image/tt.jsp 為被清除的url地址列表
/usr/local/varnish-2.1.3/bin/varnishadm -T 127.0.0.1:3500 purge "req.http.host ~ www.linuxidc.com$ && req.url ~ /static/image/tt.jsp"
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一個清除Squid緩存的php函數(shù)
復(fù)制代碼 代碼如下:
<?php  
function purge($ip, $url)  
{  
    $errstr = '';  
    $errno = '';  
    $fp = fsockopen ($ip, 80, $errno, $errstr, 2);  
    if (!$fp)  
    {  
         return false;  
    }  
    else 
    {  
        $out = "PURGE $url HTTP/1.1/r/n";  
        $out .= "Host:blog.s135.com/r/n";  
        $out .= "Connection: close/r/n/r/n";  
        fputs ($fp, $out);  
        $out = fgets($fp , 4096);  
        fclose ($fp);  
        return true;  
    }  
}  

purge("192.168.0.4", "/index.php");  
?>

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
配置開機(jī)自動啟動Varnish
vim /etc/rc.d/rc.local
在末行寫入以下內(nèi)容:
ulimit -SHn 8192
/usr/local/varnish-2.1.3/sbin/varnishd -u www -g www -f /usr/local/varnish-2.1.3/etc/varnish/varnish.conf -a 0.0.0.0:80 -s file,/data/varnish_cache/varnish_cache.data,100M -w 1024,8192,10 -t 3600 -T 127.0.0.1:3500
/usr/local/varnish-2.1.3/bin/varnishncsa -w /data/logs/varnish.log &
查看Varnish服務(wù)器連接數(shù)與命中率:
/usr/local/varnish-2.1.3/bin/varnishstat
以上為varnish的狀態(tài),
1675         0.00         0.06 Client requests received   為服務(wù)端接收的客戶端請求次數(shù)
179         0.00         0.01 Cache hits    為命中緩存,從緩存中取得數(shù)據(jù)返回給客戶端的次數(shù),即命中率
11         0.00         0.00 Cache misses  為跳過pass緩存,從后端服務(wù)應(yīng)用中取得數(shù)據(jù)返回給用戶的次數(shù)
用help看看可以使用哪些Varnish命令:
/usr/local/varnish-2.1.3/bin/varnishadm -T 127.0.0.1:3500 help

php技術(shù)解析Linux下Varnish緩存的配置優(yōu)化,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 成人精品国产亚洲欧洲 | 亚洲香蕉久久综合网 | 91麻精品国产91久久久久 | 色老板最新地址 | 亚洲国产精品久久 | 黄色网页免费观看 | 欧美亚洲国产精品第一页 | 一区二区三区不卡在线 | 精品国产乱码久久久久久浪潮 | 综合成人 | 国产精品免费入口视频 | 91在线播放免费不卡无毒 | 亚洲大色堂 | 色婷婷精品视频 | 六月婷婷中文字幕 | 国产视频福利在线 | 天天添 | 激情六月丁香 | 91伊人久久大香线蕉 | 精品国产91乱码一区二区三区 | 日韩香蕉网 | www视频在线播放 | 久久久久久久久亚洲 | 精品福利视频网 | 超91在线| 欧美福利视频 | 精品福利一区二区免费视频 | 精品国产高清a毛片无毒不卡 | 午夜视频www | 99视频精品全部免费观看 | 95视频在线观看在线分类h片 | 亚洲色欧美 | 2021国产精品自产拍在线 | 二区三区视频 | 欧美裸妇 | 人禽伦交视频在线观看 | 国产成人亚洲欧美激情 | 日本欧美一区二区三区不卡视频 | 九九99国产精品视频 | 黄色网在线看 | 欧美最猛性xxxxx黑人巨 |