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

相关文章
|
JavaScript 安全 算法
基于规则评分的密码强度检测算法分析及实现(JavaScript)
用正则表达式做用户密码强度的通过性判定,过于简单粗暴,不但用户体验差,而且用户帐号安全性也差。那么如何准确评价用户密码的强度,保护用户帐号安全呢?本文分析介绍了几种基于规则评分的密码强度检测算法,并给出了相应的演示程序。大家可以根据自己项目安全性需要,做最适合于自己的方案选择。
2715 0
|
前端开发
【Sa-Token】7、Sa-Token抛出的异常统一处理
在 Sa-Token 的登录,授权,验证过程中,会抛出很多的异常,我们不能将这些异常信息直接返回给用户,因为用户是看不懂这些异常信息的,我们就需要对这些异常信息进行处理,处理之后再返回展示给前端用户
1893 0
|
2天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
3天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
352 91
|
4天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
373 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
4天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
10天前
|
人工智能 自然语言处理 前端开发
Qoder全栈开发实战指南:开启AI驱动的下一代编程范式
Qoder是阿里巴巴于2025年发布的AI编程平台,首创“智能代理式编程”,支持自然语言驱动的全栈开发。通过仓库级理解、多智能体协同与云端沙箱执行,实现从需求到上线的端到端自动化,大幅提升研发效率,重塑程序员角色,引领AI原生开发新范式。
882 156