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的作用,有错误还望指出~~


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