大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天给大家介绍一下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如何进行缓存策略增加动态服务吞吐量的全部内容了,更多与ATS如何进行缓存策略增加动态服务吞吐量相关的内容可以搜索创新互联之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下创新互联!