
Apache Traffic Server
文章平均质量分 77
雪峰流云
以技术为乐的程序猿!
展开
-
ats 6.2.3中diags.log日志滚存遇到的assert崩溃问题并解决
ats 6.2.3开启diags.log滚存功能出现assert失败导致coredump的解决办法。原创 2022-11-18 21:48:12 · 673 阅读 · 0 评论 -
在CentOS 6.5 x86_64上安装libunwind的问题
1.事由当时间进入2021年,之前的对CentOS 6.x上的官方依赖仓库和国内镜像仓库都不好使了,如果要安装软件包,是一个痛苦的事情。今天我在一台CentOS 6.5的老机器上安装ats的rpm包,结果报错上说,缺少依赖库libunwind和libunwind-devel。2.常用方法行不通安装依赖库yum install libunwind libunwind-devel -y这种方法行不通,因为epel-release包安装不上,而且官方依赖仓库已经放弃了支持对CentOS 6.x版本原创 2021-10-13 14:12:56 · 2861 阅读 · 0 评论 -
ATS 5.3.0中parent.config配置文件解读
parent.configparent.config文件识别用在缓存分级中的父代理,用这个文件去执行下面的配置:搭建父分级缓存,兼容多父级缓存和父级缓存故障转移配置指定的URL请求避开父代理缓存仅当父缓存选项开启后,ATS才能使用parent.config文件。当你修改parent.config文件后,运行traffic_ctl config reload命令去让变更生效。当你原创 2015-09-03 18:27:35 · 2706 阅读 · 0 评论 -
ATS统计量proxy.node.client_throughput_out的单位调研
proxy.node.client_throughput_out表示客户端字节吞吐量,那单位是什么呢?我通过在SourceInsight中搜索ATS 5.3.1的源码,在traffic_shell.pl中找到相关线索,截图如下:从中可以看到,proxy.node.client_throughput_out的单位是Mbps。下面是另一篇文章中的证明:http://www.tuic原创 2015-12-02 16:26:53 · 1362 阅读 · 0 评论 -
在CentOS 6.3 64bit上安装ATS 5.3 LTS版本并测试
由于ATS 5.3是社区刚推出的LTS最新版本,比以前的版本改动幅度相当大,所以我决定抛弃以前的经验,从零开始探索该版本。下面是我的摸索实录。1.下载源码cd /usr/local/srcwget -d "http://mirror.bit.edu.cn/apache/trafficserver/trafficserver-5.3.0.tar.bz2"tar jxvf tr原创 2015-05-21 17:06:20 · 2262 阅读 · 0 评论 -
ATS线上报告个别日志过大无法写入问题的解决方法
访问日志是分析CDN线上问题的重要参考依据,但是我们在实际运维中发现很多部署点日志记录出现一些小问题,会造成相应的日志条目丢失。我们发现线上一些服务器上时常会报告如下问题:diags.log中经常报如下错误:[Mar 31 02:39:34.185] Server {0x2b1d85563700} NOTE: Skipping the current log entry for acce原创 2015-04-29 11:02:27 · 1309 阅读 · 0 评论 -
CentOS 6.3 64bit上测试ATS 5.3.0中的正则刷新插件regex_revalidate
注意到ATS源码目录plugin/experimental/下面有regex_revalidate插件目录,我们在编译时添加--enable-experimental-plugins配置项就可以将其编译安装到动态库安装目录/libexec/trafficserver中去。如果是ATS 4.x版本中没有源码的话,我们需要先将regex_revalidate单独复制出来,利用tsxs编译出动态库,并安原创 2015-05-26 14:59:40 · 2012 阅读 · 0 评论 -
ATS中的ComboHandler合并回源插件调研
插件也支持前缀参数。后续文件路径的共同部分能够提取出来并使用p查询参数来单独指定,后续的文件路径参数附加到该前缀后面生成一个完整文件路径。前缀有效期直至被改改变或是清除(设为空字符串)。比如下面的query字符串"/file1&p=/path1/&file2&file3&p=&/file4&p=/dir:path2/&file5&file6"会得到如下文件路径/file1/p原创 2015-05-28 07:47:06 · 2445 阅读 · 0 评论 -
在Ubuntu 14.04 64bit上升级安装ATS 5.3.2/6.1.1实录
原由在开发过程中,发现下面的接口在ats 4.1.2上没有定义,在5.3.x中有定义bool cacheable = TSHttpTxnIsCacheable(txnp, NULL, response);遂决定在工作机ThinkPad上升级ATS1.安装依赖因为原来是ats 4.1.2,现在属于升级,这步跳过。2.配置,编译和安装./configure原创 2016-05-03 18:14:28 · 842 阅读 · 0 评论 -
如何让插件代码同时兼容ats 5.x和ats 6.x的方法
近一年来,ats的代码进行了较大的修改, 很多接口的声明都有较大变动. 比如tsapi TS_DEPRECATED TSReturnCode TSHttpIsInternalRequest(TSHttpTxn txnp);tsapi TSReturnCode TSHttpTxnIsInternal(TSHttpTxn txnp);TSPluginRegister(TS_SDK_VE原创 2016-05-13 15:14:44 · 822 阅读 · 0 评论 -
在ATS 5.3.0上开启stats_over_http插件
在plugin.config中添加stats_over_http.so然后重启服务器,在浏览器中输入下面的地址查询http://host:port/_stats这里host是ATS所在的hostname或是ip,port就是侦听http连接的端口,按照配置我这里分别是10.10.110.162和8081http://10.10.110.162:8081/_stats会得到一原创 2015-05-30 17:29:35 · 1686 阅读 · 0 评论 -
ATS 5.3.0中开启最高级别的缓存调试信息
近来在pptv,letv之类的站点响应中看到via头中有非常详细的缓存信息,我研究了一下,原来是ATS默认就支持的,以ATS 5.3.0中为例,修改records.config中的如下配置项:CONFIG proxy.config.http.insert_request_via_str INT 1CONFIG proxy.config.http.insert_response_via_st原创 2015-09-22 11:21:15 · 1066 阅读 · 0 评论 -
ATS 5.3.0中自定义日志格式文件logs_xml.config解读
缘起近来因为公司项目需要,阅读了一部分ATS logging system的源码实现,越发觉得logs_xml.config文件的配置非常重要,而我目前只是实践了一点它的皮毛。为此,根据自己的理解,翻译了官网的这篇文档,以作备忘。logs_xml.config文件定义了自定义日志文件格式,过滤器和处理选项。文件格式采用xml。文件格式logs_xml.config文件包原创 2015-08-31 14:41:40 · 2596 阅读 · 1 评论 -
ATS插件channel_stats源码分析解读
简介channel_stats插件能对每个channel收集运行时统计信息(速率,请求数,更多选项将在未来添加),这些统计信息通过http json方式输出,这些接口代码取自stats_over_http插件。通常,该插件只用于具有*固定*个数的remap规则的反向代理服务器,它并非为那些不限制channel的代理服务器,比如open-relay forward proxy而设计的。原创 2015-08-27 08:43:24 · 1226 阅读 · 0 评论 -
ATS 5.3.0命令行工具traffic_via
原来我们可以从官网http://trafficserver.apache.org/tools/via获取via头的解码信息来得到指定url的缓存状态信息,现在我们可以直接利用本地工具就可以达到目的。traffic_via工具能够解码Via头信息,输入的参数要求是[]包含的字符串。使用方法:参考文献[1].https://docs.trafficser原创 2015-09-06 17:15:48 · 1380 阅读 · 0 评论 -
ATS 5.3.0中利用grep得到纯净的配置文件
ATS 5.3.0中的配置文件通常会标有详细的注释,但是我们有时候需要纯净的配置文件,特别是在线上部署的配置文件,不需要这么详细的注释。下面是处理过程。cat records.config | grep -v ^$ | grep -v "#" > tao_627.config命令解释:grep -v ^$去除空行grep -v ^#去除注释行gre -v "#"去除含#的行原创 2015-09-11 10:48:41 · 698 阅读 · 0 评论 -
ATS 5.2.1中Background-Fetch插件调研笔记
简介这是Apache Traffic Server(简称ATS)中的一个插件, 允许你从源站主动获取Object内容并填充到缓存中, 当你的所有或是大部分client request都是byte-ranged类型时, 这特别有用. 目前ATS并不能缓存byte0-range类型的request/response.功能检查回源的响应, 在原始的(客户端)请求满足下面条件时, 是否触发一条backgro原创 2015-05-01 22:29:16 · 1895 阅读 · 0 评论 -
ATS无法缓存QQ音乐的音频文件问题
一、问题报告昨天运维报告江苏移动25上的缓存服务器无法缓存带有防盗链的音频文件,访问日志access.log中大量报如下错误1430129072.554 677 206 [18:04:32] 100.113.23.233 "GET http://cc.stream.qqmusic.qq.com/463238.m4a?vkey=19FB11C8395A01D9CE783CFCFEDF2140原创 2015-05-05 15:42:25 · 3854 阅读 · 0 评论 -
在ATS插件中使用互斥锁
有时候因为业务需要,对某些非线程函数,比如mktime,需要使用互斥锁,可以参照example/blacklist-1或者channel_stats里面的用法首先插件顶部声明static TSMutex sites_mutex;在TSPluginInit()中初始化sites_mutex = TSMutexCreate();在需要使用的地方,加锁和解锁TSMutexLock原创 2015-06-27 11:11:58 · 1180 阅读 · 0 评论 -
ATS 5.3.0日志字段分析(续)
自定义日志域Custom Logging Fields下面的字段描述了ATS支持的自定义日志域{HTTP header field name}cqh{HTTP header field name}pqh{HTTP header field name}psh{HTTP header field name}ssh{HTTP header field name}cssh参见下原创 2015-08-27 15:51:14 · 1822 阅读 · 0 评论 -
Apache Traffic Server 4.2.1/5.3.2上的坑!
昨天在CentOS 6.3 64位虚机上成功安装ATS 4.2.1上无法正常启动原创 2014-05-08 17:44:50 · 4335 阅读 · 0 评论 -
ATS 5.3.0缓存架构
下面是参考文献[1]的翻译简介ATS既可以用作HTTP代理,也可以用作HTTP缓存,ATS能够缓存任何字节流,虽然它当前只支持HTTP协议传输的字节流,当这样的流缓存时,会带一个HTTP协议头部,会命名为缓存中的一个对象object。每个对象通过一个名为cache key的全局唯一值识别。该文档的目的是描述ATS缓存的基本结构和实现细节。缓存的配置只讨论到需要理解内部机制的程度原创 2015-09-05 11:13:32 · 7177 阅读 · 0 评论 -
CDN和Web Cache领域相关的经典书籍推荐
今天花了一天的时间,梳理了一下我手头上收集的一些cdn,web cache,dns,p2p,视频等相关资料,发现有些书籍很有参考价值,特整理出来,以备后续参考和深入学习。原创 2016-07-06 18:24:15 · 6215 阅读 · 0 评论 -
ATS 6.2.1中缓存文件过期并不回源校验的“坑”
事先说明标题说是“坑”,并没有说是“bug”,也就是多半是玩的姿势不对。线上问题我司(lecloud)目前线上大小文件都是使用的ATS 6.2.1版本,昨天运维反馈有文件超过缓存时间并不回源刷新,截图如下:现象就是:age超过max-age了,过期了不更新!另外需要说的一点就是,源站是可以正常回源的。复现现象并打印调试日志我复现了上述现象,发现问题的确如此,而且...原创 2018-12-12 15:57:21 · 955 阅读 · 1 评论 -
在Ubuntu 16.04.1 LTS上安装ATS 6.2.1 LTS实录
这篇文档基本上与前一篇CentOS 6.8上面的相同,因为我所有的开发环境都是在Ubuntu上面的http://blog.youkuaiyun.com/tao_627/article/details/56842905下面我只是简单记录步骤和截图。1.安装依赖包由于官网文档没有Ubuntu 16.x的安装指导,下面是我的摸索,总体上ATS 4.x, 5.x版本区别不太大sudo ap原创 2017-02-28 14:17:46 · 1135 阅读 · 0 评论 -
ATS 6.2.1打release版本rpm包时插件中出现undefined symbol的问题追踪
问题场景我基于ATS 6.2.1社区版整合进一些插件,发现debug版本一直运行好好的,后来改为release版本(就是configure时不加--enable_debug)时,安装后显示下面的出错信息[May 11 11:33:18.659] Server {0x2ab7cd116700} ERROR: [ReverseProxy] failed to add remap rule原创 2017-05-12 13:31:58 · 1520 阅读 · 0 评论 -
解密ATS 4.2.3的缓存状态密码
大家都知道查询ATS缓存一个对象的缓存状态标志码,就是通过如下官方链接http://trafficserver.apache.org/tools/via下面我将通过命令行缓存资源的方法来进一步认识ATS缓存对象的状态变化,以作整理和备忘,各位大牛敬请绕行!开启方法:traffic_line -s proxy.config.http.insert_request_via_str原创 2015-04-28 13:37:57 · 3925 阅读 · 0 评论 -
在CentOS 6.8 x86_64上安装ATS 6.2.1实录
我的博客上已经有很多这样的ats安装实录了,这次的笔记有些不一样,因为它是ATS目前最新的LTS版本6.2.1的安装,写出来更多的是整理自己的思路,因为很多东西搞过不整理,过一段时间就完全忘记掉了。安装环境:在rMBP 15.4上上面安装了VMware Fushion 专业版8.5.1,操作系统是MacOS Sierra 10.12.3, 在VMware上安装的是CentOS 6.8 x8原创 2017-02-24 16:07:16 · 2486 阅读 · 0 评论 -
在Ubuntu 16.04.1 LTS上安装ats 5.3.2
1.安装依赖包sudo apt-get install g++ make pkg-config libssl-dev tcl-dev libexpat1-dev libpcre3-dev libmodule-install-perlsudo apt-get install bison flexsudo apt-get install bison flex2.配置编译和安装.原创 2016-11-29 09:31:44 · 1238 阅读 · 0 评论 -
在CentOS 6.3 64bit上安装tsar并监控Apache Traffic Server
Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告工具,如收集服务器的系统信息(cpu,mem等),以及应用数据,收集到的数据存储在服务器磁盘上,可以随时查询历史信息,也可以将数据发送到nagios报警。Tsar能够比较方便的增加模块,只需要按照tsar的要求编写数据的采集函数和展现函数,就可以把自定义的模块加入到tsar中。一般是将Tsar和ATS部署到同一台物理主机上,以便于收原创 2015-04-01 16:13:43 · 3194 阅读 · 0 评论 -
Akamai CDN技术调研
周末在家仔细研读了一篇Akamai几年前的CDN架构综述,做了点笔记,先简单整理如下。Akamai CDN中的几个重要组件mapping system 调度系统(映射client到edge cluster,进而到edge server)edge server platform 边缘服务器系统transport system 分层(tired)回源系统communicatio原创 2016-10-26 22:59:08 · 5520 阅读 · 0 评论 -
ats 5.3.2中的header-rewrite插件调研
用途该插件允许你通过预先定义的规则来修改不同的headers。改造自Apache HTTPD的mod_rewrite模块。源码目录trafficserver-5.3.2/plugins/header_rewrite用法(Using the plugin)既可以用作全局插件(作用于全局请求),也可以用作remap插件(作用于匹配的特定请求)全局插件用法:在原创 2016-10-26 22:50:49 · 1726 阅读 · 0 评论 -
在CentOS上安装TCP协议性能评测工具tcpdive
1.Tcpdive的基本原理Tcpdive是基于linux内核的探测点机制,使用systemtap脚本语言和内嵌C代码来实现的。 通过定义几类相互关联的探测点和库函数,来收集和处理运行中内核的数据,以及修改内核的处理逻辑。2.源码目录https://github.com/fastos/tcpdive目前的代码基于CentOS 6.5,内核版本号2.6.32-431.17.1原创 2016-09-21 10:13:58 · 2643 阅读 · 1 评论 -
ATS上的hosting.config和volume.config文件解读
为了更加灵活和精细地规划缓存磁盘的空间使用,我们可以更进一步地使用hosting.config和volume.config文件。 hosting.config描述域名和分卷的对应关系:hostname=www.example.com volume=2hostname=* volume=3,4domain=* volume=3,4volume.config描述分卷原创 2016-07-22 14:36:10 · 1283 阅读 · 0 评论 -
在CentOS 6.6 x86_64上安装SystemTap/Perf+FlameGraph玩转火焰图实录
下面是我结合网上资料摸索出的可行的操作方法,记录在这样,以备后面继续研究。操作系统是CentOS 6.6 x86_64。1.将内核版本升级到最新版因为我机器上CentOS 6.6的内核版本号是2.6.32-573.12.1.el6.x86_64,网上根本找不到对应的kernel-devel,kernel-debuginfo和kernel-debuginfo-common内核rpm包,而升级原创 2016-08-06 18:54:20 · 4036 阅读 · 1 评论 -
ATS中的RAM缓存简介
RAM缓存新RAM缓存算法(CLFUS)新的RAM缓存使用的创意来自许多缓存替换策略和算法,包括LRU,LFU,CLOCK,GDFS及2Q,它被命名为时钟周期内最小频繁使用大小算法CLFUS(Clocked Least Frequently Used by Size)。它避开了任何专利算法,具有如下特性:均衡最近性(Recentness),频率(Frequency)和大小(Size)以最大化命中率原创 2016-07-02 09:47:24 · 3727 阅读 · 0 评论 -
ATS cache中的几个数据结构图收集
下面的图片摘自Fall Summit 2014中的ATS committer Alan M. Carroll的ppt,仅作研读ATS源码时作参考。参考文献[1].https://cwiki.apache.org/confluence/display/TS/Presentations+-+2014原创 2015-04-23 18:46:58 · 2205 阅读 · 0 评论 -
ATS缓存相关话题
将追加的主题内存常驻副本(resident alternates)缓存对象刷新(object refresh)缓存一致性(Cache Consistency)ATS缓存是完全一致性的,除非你不小心踢掉电源,让ATS突然关机。如果要禁用硬盘驱动器自身的缓存,你需要使用下面的命令hdparm -W0缓存系统会校验可用文档(document)的所有数据,并默认将不完整的文档标记为读MISS。无须小原创 2016-07-01 13:51:07 · 4870 阅读 · 0 评论 -
ATS名词术语(待续)
ATS名词术语副本(alternate)缓存对象(cache object)的一种变体,最初创建该术语是为了处理HTTP协议中的VARY机制(RFC2616#sec14.44),现在多用于其它的目的。一个对象的所有副本必须以某种方式等价,也就是说,它们是同一个流的等价形式,最常用的一个例子就是,一个流既有普通版本也有压缩版本。缓存分片(cache fragment)缓存的内容存储单元,缓存的读操作每原创 2016-06-30 18:42:52 · 1352 阅读 · 0 评论 -
ATS缓存数据结构
ATS缓存数据结构HttpTunnel类数据传输驱动器(data transfer driver),包含一个生产者(producer)集合,每个生产者连接到一个或是多个消费者(comsumer)。隧道(tunnel)处理事件和缓冲区以便数据能从生产者移动到消费者,数据会尽可能保存在引用计数类型的缓冲区中。只有数据发生变动,或者在数据源(它从ATS外部获取数据)和数据接收端(它将数据发送到ATS外部)原创 2016-06-30 18:40:09 · 1771 阅读 · 0 评论