varnish性能測試

安裝varnish

[root@node3 ~]# ls
anaconda-ks.cfg  install.log.syslog  varnish-docs-3.0.6-1.el6.x86_64.rpminstall.log      varnish-3.0.6-1.el6.x86_64.rpm  varnish-libs-3.0.6-1.el6.x86_64.rpm
[root@node3 ~]# rpm -ivh varnish-3.0.6-1.el6.x86_64.rpm varnish-libs-3.0.6-1.el6.x86_64.rpm varnish-docs-3.0.6-1.el6.x86_64.rpm 
Preparing...                ########################################### [100%]   
1:varnish-libs              ########################################### [ 33%]   
2:varnish                   ########################################### [ 67%]   
3:varnish-docs              ########################################### [100%]

配置varnish運行屬性

varnish配置文件

varnishadm管理工具連接

[root@node3 ~]# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
200        
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,2.6.32-504.el6.x86_64,x86_64,-sfile,-smalloc,-hcritbit
varnish-3.0.6 revision 1899836
 
Type 'help' for command list.
Type 'quit' to close CLI session.
 
varnish>

修改default.vcl配置文件測試

backend webserver {
  .host = "172.16.30.11";
  .port = "80";
}

varnishadm管理工具重新載入配置文件

varnish> vcl.load t1 /etc/varnish/default.vcl ##載入配置文件,t1是給此配置命名,後面跟配置文件,如果有錯誤會有提示
200        
VCL compiled.
varnish> vcl.use t1                           ##使用上面載入的配置文件,不用重啓varnish
200        
 
varnish>

測試結果

在172.16.30.11的主機上安裝好wordpress,這裏不在詳細列出

修改default.vcl爲wordpress加速

注:此配置文件參考《高性能Linux服務器構建實戰》高俊峯 著

backend webserver {          ##定義的後端主機,此主機上有wordpress
  .host = "172.16.30.11";
  .port = "80";
}
sub vcl_recv {
        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;
        }
     if (req.request != "GET" &&   ##如果請求的類型不是GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE時,則進入“pipe”模式
       req.request != "HEAD" &&
       req.request != "PUT" &&
       req.request != "POST" &&
       req.request != "TRACE" &&
       req.request != "OPTIONS" &&
       req.request != "DELETE") {
         /* Non-RFC2616 or CONNECT which is weird. */
         return (pipe);
     }
     if (req.request != "GET" && req.request != "HEAD") {  ##如果請求的類型不是GET或HEAD,則進入pass模式
         return (pass);
     }
     if (req.http.Authorization || req.http.Cookie) {
         return (pass);
     }
}
 sub vcl_pipe {
     return (pipe);
 }
 sub vcl_pass {
     return (pass);
 } 
 sub vcl_hash {
     hash_data(req.url);
     if (req.http.host) {
         hash_data(req.http.host);
     } else {
         hash_data(server.ip);
     }
     return (hash);
 } 
 sub vcl_hit {
     return (deliver);
 }
 
 sub vcl_miss {
     return (fetch);
 }
sub vcl_deliver {   ##測試緩存是否命中
        if (obj.hits > 0){   
        set resp.http.X-Cache = "HIT";    
        } else{
        set resp.http.X-Cache = "MISS";
        }
        return (deliver);
}

測試使用和不使用varnish的區別

在非此兩臺主機的主機上使用ab進行壓力測試

順便附上varnish主機的cpu與httpd主機的cpu使用

直接對httpd服務器進行ab壓力測試,因爲電腦性能低,只測試了少量併發。

總結

    直接訪問只有可憐的1.73個請求,而使用varnish每秒處理985個請求,可見varnish的作用。

本文只是簡單的測試了varnish的作用,有錯誤還望指出~~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章