搜索
首页运维安全ATS如何进行缓存策略增加动态服务吞吐量

先看一下策略调整后瞬间的流量图:

ATS如何进行缓存策略增加动态服务吞吐量ATS如何进行缓存策略增加动态服务吞吐量

    为了提高用户体验,增大缓存放大比,同时又要避免客户报障,在做cache时可谓是煞费苦心,大文件、小文件分离,在小文件里又把动态内容和静态内容分离,能存的东西基本上全部存了,唯有动态内容一直没下手,按照之前的策略,动态内容直接代理,1:1的进出,可是某些局方就是不消停,非要达到某个放大比,没折了,在动态内容里面动一下刀吧。

    在动刀之前,先做分析,对能存的动态内容和ATS的缓存策略做了大量测试,受益匪浅。当前ATS的缓存策略完全按照http协议规定,采用最保守的缓存方式,即只对有明确生命周期缓存头的信息进行存储,动态、cookie、authorization、no-cache一律不存,ats中对应的配置参数就不写了。为了保证质量,直接把带cookie、和授权的动态内容略过了,原因就是风险太大,剩余的有这几类可以尝试:

1、有明确生命周期头的动态url图片等内容;(我们假设网站的头信息是可信的)

2、没有明确头生命周期头的静态url图片、动态url图片等,包括没有任何信息的或只有last-modified头的图片等信息。

对于第1类,很好处理,ats有相应的参数,打开即可:

proxy.config.http.cache.cache_urls_that_look_dynamic INT 1

对于第2类,处理起来,就是个技术活了,首先线上对于头信息的必要条件是:

proxy.config.http.cache.required_headersINT  2     

只有放开对这个的限制,才能把第2类给纳括进来,所以把其设置为0是第一必要,设置好后怎么保证其正常服务呢,比如说验证码,他在设置的时候就是没有头信息,保守的策略肯定是正常服务,但这么一放开肯定报障。经分析,ats对于没有头信息内容的缓存时间走的是最大最小缓存时间来确保的,两条时间参数如下:

proxy.config.http.cache.heuristic_min_lifetime INT 3600

proxy.config.http.cache.heuristic_max_lifetime INT 864000

对于只有last-modified头的信息是通过老化因子计算出来的,老化因子参数如下:

proxy.config.http.cache.heuristic_lm_factor-v 0.1

于是想出主意,内容来后通存,但每次吐之前让ATS发一个IMS头信息给源站询问是否有变化,由于这个头信息只是询问,不会占用多少流量,如果没有变化就TCP_REFRESH_HIT吐给用户,虽然回源了,但是内容还是从缓存中吐出去的,如果有变化那就TCP_REFRESH_MISS吐给用户,用户拿到的同样是最新内容,这样无形中会增加一部分吐流。

可是参数怎么设置呢?突然想到我可以把上面的参数都设置为0,理论上就达到了我的目的,第一次存下来,从第二次开始就IMS头回源询问,马上找测试环境测试,果然跟料想的一样,兴奋之余立马把策略更新到线上,通过流量图工具监控了一小时,回源总体是有所减少了,不过也发生了奇怪的事儿,用tsar看某些时刻的回源还是和吐的差不多,而且用traffic_logstats -s分析后发现有很多的ERR_CLIENT_ABORT,真是要命,这个日志是客户端连接后数据还没接收完就主动断开了连接,少是正常的,多的话就有问题了,我找了个1M带有max-age的图片做测试,先purge一下,然后curl连接一下马上断开,制造这个错误日志,第二次访问,竟然是TCP_HIT,下载到本地图片正常打开,要命啊,原来ATS在处理这种问题时会继续下载到cache里面去,因为这批域名质量本就差,所以造成回源流量时而还是很高,继续想办法google上找资料,找到了这条参数:

proxy.config.http.background_fill_completed_thresholdFLOAT 0.5

默认是设置为0的,这个参数的意思是客户端突然断开,下载到百分之多少时会继续下载,否则就会断开,没有多加考虑,设置为0.5,做了测试,然后马上更新上去,流量稳定了,吞吐量也上升了。

终于算是一个小圆满,并不是线上的参数就这么稳定了,后续根据业务情况还是需要调整测试的的,不过这也是乐趣所在吧。

所有的调整是一个平衡,当前的调整:1、增加了磁盘读写IO;2、增加了cpu的负载。

以上是ATS如何进行缓存策略增加动态服务吞吐量的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:亿速云。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具