首页 > 分享, 配置文件 > 记一次traffic server回源异常故障的排查

记一次traffic server回源异常故障的排查

2013年12月27日     浏览数:3,288 发表评论 阅读评论

 

       最近团队很不太平,灿哥临走又装了一大堆ats替换了线上的squid。装的我们是直揪心,发愁呀,这玩意不懂。没办法,一个大省全部都ats化了,勉强维护呗。

 

1.问题出现:

 

        怕什么来什么,灿哥前脚刚走就来故障了。客服同事告知有台设备宕机了,重启之后ats无法启动。看了眼是/目录满了,清理了之后启动ats正常,本以为就完事了,后来客服同事再次告知我,设备流量异常,几乎没有命中。

 

 

                              image

 

        这个是当时的流量图(红线框),可以看出回源几乎100%了。上设备看了眼,日志请求的统计信息中几乎也是没有HIT的内容,全都是各种MISS。

 

                               image

 

2.排查源站:

 

        由于我们的业务特点,基本的回源率基本也保持在40%左右,其实也看源站了,如果做的源站都不让存,那80、90%的回源率之前也有的,不过这些站点我们一般都发现了强制缓存了。

      

       从日志中找了一个MISS的链接去直接在本机设备抓取看下源站信息:

 

                           

                               image

 

        发现源站是没问题的,存在明确的缓存控制头信息,没道理存不下来的,很可能是设备本身的问题了。

 

3.排查设备配置:

 

         前面已经判定了设备服务的站点本身是没问题的,那问题的焦点就集中在了设备自身配置的问题了。

 

         在设备上代理本机的请求看下究竟是什么情况:

               

                              image

          发现多次抓取都是MISS掉了。

          第一反应就是这设备的records.config被修改了吧,估计是缓存功能没打开,查看相关配置:

 

                              image

         

          http.cache.http 是打开的,1表示开启缓存功能,其他的相关参数也没有问题。看来不是这个的问题,那是不是磁盘的相关参数配置错误呢:

 

                              image

 

          发现配置了使用的相关磁盘,也没有大问题。

 

4.检查cache空间

 

          无奈找灿哥帮助,同时在群里找大神帮忙,感谢北国、纸鸢两位大神耐心帮我排查,最后helaku大神提醒我看下cache空间是不是为0了,echo “show:cache-stats” | traffic_shell看下:

            

                                image

 

          发现cache空间果然为0,难怪无法缓存。

         

 

5.确定问题:

 

          现在问题很明确了就是无可用的存储导致的,那么肯定是磁盘故障了或者无权限导致的。查看启动日志:

        

                                image

 

           从日志中可以看出是相关的磁盘无读写权限导致的。

            查看磁盘属性:

 

                                image

          

           的确是权限不足。

           同时灿哥也回复了,让我检查启动日志、看下磁盘权限是不是不对。感谢灿哥,大神就是大神,果然牛掰。

 

6.修复:  

 

          确定了权限的问题就好办了,直接修改权限就ok 了:

 

                                 image

 

            重启traffic server、查看相应的cache空间:

 

                                image

 

             现在正常了,同时查看启动日志,也没有再抱怨权限不足的告警。查看相应的日志统计,请求命中也上去了,回源慢慢的掉下来了:

 

                              image

    

7.总结:

 

           导致traffic server回源异常的可能原因有以下几个:

                 1.http.cache.http 参数异常,为0表示不开启缓存功能,这个时候肯定是全MISS的

                2.storage.config中未配置相应的磁盘、目录,会导致无可用cache空间,从而也会全MISS

               3.相应的磁盘、目录权限不足,也会导致无可用空间,同样还是全MISS掉

               4.源站的问题,traffic server默认为遵循源站,如果源站不让缓存也会导致MISS过高,但一般不会全MISS

 

               以上都是可能的几个原因, 其实这里我不应该首先检查源站,全MISS的情况下一般都不可能是源站导致的,更应首先排查自己配置的问题。

              最后感谢北国、helaku、纸鸢、灿哥等多位大神的热心帮忙。

  1. 笑笑弥勒佛
    2014年4月25日15:14 | #1

    回源的那部分代码,有谁知道是哪个模块啊?在ats中。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.