Varnish 服务管理与性能调优

简介:

每一个来自客户端请求在varnish中都是一个session,一个session会被分配到一个空闲的thread处理。 当没有空闲的thread时,varnish会创建新的thread来处理。 当全局的thread数量超过thread_pool_max * thread_pools时, varnish会将请求放入队列,当队列满时,varnish开始丢弃请求。 Varnish的默认配置,thread_pools2thread_pool_max500,也即最多1000thread。 当并发处理的请求量(注意不等价与并发请求量)大于1000时,varnish就过载了。


下面我们来看看如何调整线程池


管理命令:

Varnishadm


param.show -l   //列出所有配置参数,与注释。

Param.show 


thread_pool_max    1000 [threads]   //定义线程池最大线程

thread_pool_min     50 [threads]    //每个线程池最小活动线程

thread_pools         2 [pools]  //启用多少个线程池

lru_interval         2 [seconds]     //使用(LRU)最近最少使用算法,清理缓存对象的频率,默认2秒一次。

listen_depth       1024 [connections]  //当线程池满了,后续请求队列的长度。

现在我们对这些参数进行调整

param.set thread_pool_max 2000

param.set thread_pools 4

param.set thread_pool_min 100


调整完成查看一下

wKioL1PyqsLwkyerAAGo6zbObzI431.jpg

注意:thread_pools 参考机器物理核心的数量,官方建议设置为2。线程数不建议太多,超过5000也许会带来服务不稳定。


配置调优

beresp.grace 表示一个object即使已经过期了,仍然在缓存中存放一段时间。

req.grace 表示,当一个请求命中了一个刚过期的object,由于回源需要一段时间, 为了立刻返回,那么在过期后的req.grace时间内, 可以将过期的那个object返回给客户端, 当然,这要求beresp.grace >= req.grace

Example:

wKioL1PyrvzCQNGnAAGJOrPmJJU463.jpg

与Cookie有关的缓存

业务要求大致如此,对于一个domain下的请求,客户端总是会带Cookie, 而该domain下面有一些请求是需要缓存的。在之前的配置中,vcl_recv中设置了只要有Cookiereturn(pass), 因此如果某个url需要缓存,就需要手动对该urlvcl_recv中 删除req.http.Cookie,并在vcl_fetch中删除beresp.http.Set-Cookie。 这样运维的工作与后端的开发工作就耦合了。期望的效果是,后端如果需要缓存某个url,则在该请求的返回头中带有Cache-Control头, 然后Varnish就自动根据该头来缓存相应的时间,而如果一个请求的返回中没有Cache-Control头,则默认不能缓存。

wKiom1Pys7qTT84_AAFT8QaB0JU537.jpg



varnishstat  用于查看varnish状态

wKioL1PyrZTCB5u_AAZtXpS0wzU747.jpg






日志功能的使用

  • Service varnishlog start 

查看日志

  • varnishlog

本章内容并非全部原创,有引用大牛网友的分享。


推荐阅读:http://blog.csdn.net/keda8997110/article/details/8777153



本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1541869

相关文章
|
网络协议 Unix 应用服务中间件
Nginx极简实战—Nginx服务器高性能优化配置,轻松实现10万并发访问量
如何使Nginx轻松实现10万并发访问量。通常来说,一个正常的 Nginx Linux 服务器可以达到 500,000 – 600,000 次/秒 的请求处理性能,如果Nginx服务器经过优化的话,则可以稳定地达到 904,000 次/秒 的处理性能,大大提高Nginx的并发访问量。
Nginx极简实战—Nginx服务器高性能优化配置,轻松实现10万并发访问量
|
10天前
|
应用服务中间件 网络安全 nginx
Nginx性能调优策略
Nginx性能调优策略
19 0
Nginx性能调优策略
|
11月前
|
缓存 负载均衡 安全
【性能调优】NGINX的性能调优宝典
【性能调优】NGINX的性能调优宝典
|
域名解析 缓存 负载均衡
Nginx性能优化(下)
Nginx性能优化(下)
84 0
Nginx性能优化(下)
|
安全 关系型数据库 MySQL
Nginx性能优化(上)
Nginx性能优化
136 0
Nginx性能优化(上)
|
存储 缓存 网络协议
Nginx-性能优化
Nginx-性能优化
|
缓存 网络协议 前端开发
Nginx性能优化详解
Nginx 性能优化有这篇就够了 1、Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2。如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor /proc/cpuinfo | wc -l
388 0
|
监控 前端开发 JavaScript
Nginx性能优化
1、调整worker进程数 worker_processes 4; # 设为服务器核心数 # 一个进程绑定一个核心 # worker_cpu_affinity...
1128 0
|
Web App开发 缓存 应用服务中间件
|
存储 缓存 应用服务中间件