apache traffic server各版本信息
贺立果
2023-12-01
4.0.x新特性
在storage.config中标注磁盘
此功能的目的是允许将内容分配给特定磁盘。比如,使用storage.config标注,在hosting.config和volumes.config规则里,你可以强制使
某些URL去响应的SSD硬盘。
HTTP事务缓冲控制
为了避免潜在的内存消耗问题,当buffer的使用超过束缚则事物可被设成扼杀节流。这也可以用作每个事务的粗略带宽节流,因为如果客户端或缓存无法跟上,
限制ats的缓冲空间将会使源服务器连接带宽扼杀节流。
添加了以下配置来控制此功能(显示默认值):
proxy.config.http.flow_control.enabled INT 0
proxy.config.http.flow_control.high_water INT 65536
proxy.config.http.flow_control.low_water INT 65536
CPU线程关联 亲和性
现在可以为主要工作线程设置线程关联性。这可以提高性能,特别是在NUMA系统。
通过配置 proxy.config.exec_thread.affinity INT 1 此外,还可以通过一个新配置控制每个线程的内存池有多大(默认值是512)proxy.config.allocator.thread_freelist_size INT 512
这就意味着每个线程每个自由列表可以容纳512个对象。记住,如果此值设为一个很大的值,在高峰期时内存将显著增加。如果内存不是一个问题,设此值为一个大值可以提高性能,因为它有助于避免回到全局分配器拿取内存。
在启用缓存之前,延迟代理服务
当流量服务器启动时,我们从缓存中加载元数据信息。对于非常大的缓存,这可能需要相当长的时间(几秒钟)。在此加载和初始化时间内,服务器将默认代理请求到源站:
proxy.config.http.wait_for_cache INT 1
控制块的大小
添加一个新的配置选项,它可以让你控制的内容,是传输编码块的块尺寸大小(默认值):
proxy.config.http.chunking.size INT 4096
此功能可用于优化chunk 分块性能。
空文件缓存
在以前版本的Apache服务器与交通,空的bodies是不缓存的。我们现在提供了一个新的选项,允许这种类型的内容(可能)被缓存。
这对于缓存来说特别有用,例如没有body的重定向响应。新配置为(默认为OFF):
proxy.config.http.cache.allow_empty_doc INT 0
允许集群缓存复制对象
一个新的特性和配置允许对象存储在一个以上的集群成员中。新配置是(默认关闭):
proxy.config.http.cache.cluster_cache_local INT 0
host解析控制
解决源服务器的IP地址可以设置为在特定的顺序,无论是全局的还是基于端口的。
proxy.config.hostdb.ip_resolve STRING IPv4;IPv6
可重写配置
现在可以通过插件API和/或conf_remap.so插件对以下配置重写:
proxy.config.http.chunking.size
proxy.config.http.flow_control.enabled
proxy.config.http.flow_control.low_water
proxy.config.http.flow_control.high_water
proxy.config.http.cache.range.lookup
proxy.config.http.normalize_ae_gzip
proxy.config.http.default_buffer_size
proxy.config.http.default_buffer_water_mark
proxy.config.http.request_header_max_size
proxy.config.http.response_header_max_size
proxy.config.http.negative_revalidating_enabled
proxy.config.http.negative_revalidating_lifetime
proxy.config.http.accept_encoding_filter_enable
新的插件:cacheurl
新的插件:gzip
gzip插件允许获取到的内容压缩到的代理缓存,它是一个用以来减少你的cpu压力的方法。它还允许您控制缓存上的压缩,
即使您无法控制源服务器。
新增api和一些变化
Lifecycle hooks 用来显示端口初始化 accept cache-ready
里程碑指标
TSReturnCode TSHttpTxnMilestoneGet(TSHttpTxn txnp, TSMilestonesType milestone, TSHRTime *time);
此api用来插件测试transaction 里程碑时间
4.1.x新特性
cache.config多后缀
现在可以在一个cache.config线指定多个后缀。例如为所有图像设置一行(*.jpg,*.png等)。
日志排序指标
现在的日志整理一套新的指标特征:
事件日志::error()
proxy.process.log.event_log_error_ok
proxy.process.log.event_log_error_skip
proxy.process.log.event_log_error_aggr
proxy.process.log.event_log_error_full
proxy.process.log.event_log_error_fail
事件日志::access()
proxy.process.log.event_log_access_ok
proxy.process.log.event_log_access_skip
proxy.process.log.event_log_access_aggr
proxy.process.log.event_log_access_full
proxy.process.log.event_log_access_fail
日志数据到/从网络/磁盘
proxy.process.log.num_sent_to_network
proxy.process.log.num_received_from_network
proxy.process.log.num_flush_to_disk
proxy.process.log.bytes_sent_to_network
proxy.process.log.bytes_received_from_network
proxy.process.log.bytes_flush_to_disk
proxy.process.log.bytes_written_to_disk
其他
proxy.process.log.log_files_open
proxy.process.log.log_files_space_used
日志故障转移
现在有一个功能允许日志从一个服务器移到另一个服务器。例如:
< collationhosts =“host1:5000 | host2:5000 | host3:6000,209.131.52.129:6000”/>
该日志记录
remap.config包含指令
这可以使其他remap.config样式文件被主remap.config文件包含。这使得大型设施更好更安全的管理,特别是不同的用户有不同的remap规则。
改进:header_rewrite插件
设置头。这将覆盖所有现有值的标题,省去了先rm然后再处理。
设置配置。这提供了一种机制,修改重写records.config配置。
在一个remap规则,你现在可以通过多个“pparam选项提供了多个配置文件。顺序指定。
柔性挂钩管理。这个插件现在类似header_filter,那你可以通过。指定某些操作应该在另一个钩发生remap.config规则。
Jiras:ts-2226 ts-2227 ts-2228 ts-2230
改进:regex_remap插件
允许做小写字母的路径。
允许做小写字母组的所有替换。
如:ts-2179 ts-2209
新的插件:remap_stats
这个新的插件提供了每个映射的度量。这包括字节/指标,及各种HTTP状态码。
如:ts-2291
额外的语义“忽略不匹配”的配置
以下四个配置现在也采取了新的价值,“2”:
proxy.config.http.cache.ignore_accept_mismatch
proxy.config.http.cache.ignore_accept_language_mismatch
proxy.config.http.cache.ignore_accept_encoding_mismatch
proxy.config.http.cache.ignore_accept_charset_mismatch
默认情况下这些是禁用的(0),使用旧配置值(1)启用它们可能有严重的正确性问题。如果响应中没有变化的标头,则新选项只会忽略相应的接收头。这应该始终是安全的,以启用,并能产生更好的缓存命中率。
如:ts-2245
插件加载高度的新配置
这增加了一个新的配置选项来提升插件以使用root权限加载:
proxy.config.plugin.load_elevated
如:ts-2261
缓存集群的改进
待定。
吉拉:待定
5.3.x新特性
一般的变化
让traffic_server验证配置在命令行
旋转的??? TLS的票
HTTP/2
现在支持TLS上的HTTP2又名“H2”。这仍然是正在进行中的工作,而不是支持H2规范的一切。
优先 服务器推流 非TLS的HTTP2是不支持的。此外,HTTP2仅支持客户端,不支持出站(即我们只支持代理H2 访问http1.1后端服务器。
records.config中的以下设置来启用HTTP/2
proxy.config.http2.enabled INT 1
此外,应该有至少一个TLS端口配置proxy.config.http.server_ports。 例如, 配置proxy.config.http.server_ports STRING 80 443:SSL
新的命令行工具:traffic_ctl
新traffic_ctl命令的目的是为了取代旧的traffic_line命令。6.0之间都会有traffic_line命令,7.0将会删除。因此,请更新你所依赖的traffic_line的工具,
“动态”keep-alive timeouts
在旧版本的ATS中,必须手动配置http保持连接状态可以持续多长时间。事实证明这是非常困难的,因此添加了一个新的特性来简化这一点。使用这些新配置,现
在可以指定keep-alive的链接的最大连接数。即proxy.config.net.max_connections_in。
新的配置选项
禁止后期待一个新的配置:100继续ts-3459???
使用/etc/hosts hostdb 配置为proxy.config.hostdb.host_file.path
一些指标
添加的指标用以表示配置的保鲜度
添加缓存包的统计计数 proxy.process.cache.wrap_count
添加新的指标计算从ATS到源站的ssl链接
插件的改进
api
添加DSCP设置API
ts_lua
添加里程碑和DSCP的API支持
其他的API支持ts-3225
header_rewrite
修改scheme condition
gzip
添加“刷新”选项
generator
这个新插件,可以让ATS像内容生成器一样,通常用于设置测试环境。
6.0.x
新特性
http2: 支持http2
log:用%<cqpv>在日志中打印协议 比如HTTP/2, HTTP/1, SPDY/3.1
cluc 记录lookup_url即cache-key
traffic_line 由traffic_ctl替代
traffic_ctl config
traffic_ctl config describe proxy.config.hostdb.timeout 看具体描述信息
traffic_ctl config reload
traffic_ctl config diff 看修改配置前后参数的变化
traffic_ctl config status 配置是否成功
traffic_ctl server restart/start/stop 启动server
traffic_server -Cclear
proxy.config.cop.init_sleep_time 监测ts没有响应得需重启前的事件间隔 默认为0
proxy.config.http.websocket.max_number_of_connections 设置最大并发链接数
proxy.config.net.max_connections_active_in
proxy.config.http.max_post_size 设置post body的最值 超过此值则返回413
proxy.config.http.cache.generation 瞬间的0成本的 后来的所有请求的cachekey变化 就是all cache purge
proxy.config.http.cache.open_write_fail_action ---------------------
高并发时(看直播) 拿不到cache的锁时 可能会导致 a stale copy of the object (e.g manifest files) or a complete cache miss (e.g segment files)
都请求一个资源时 获取不到cache open write锁 时的反应 0默认去源站 有5个值
proxy.config.http.cache.open_read_retry_time 请求同一资源时 若cache不能用 需要等待10ms -----read_while_writer的过程
proxy.config.http.cache.max_open_read_retries 重试的次数
若第一个慢 则其它的就等都慢 这两个配置解决了这个问题:我试10次若拿不到cache就回源
proxy.config.cache.read_while_writer.max_retries 下载第一个片段拿不到锁时候 需要try多少次 ---触发read_while_write
proxy.config.cache.read_while_writer_retry.delay try的间隔
高并发read_while_write时出现这种可能 虽然拿到了锁但是cache过期或不存在了
proxy.config.net.inactivity_check_frequency 检查失活链接的频繁度 默认1 频率越高有可能减少系统压力
proxy.config.net.event_period 10ms调度io事件处理 是个建议值
proxy.config.net.accept_period 同上一模一样
proxy.config.net.retry_delay 发生阻塞时 等多长时间 建议值10ms
proxy.config.net.throttle_delay 触发网络节流时/扼杀场景时 设置accept的延迟 50ms ----------------------
proxy.config.cache.read_while_writer.max_retries 合并回源时 拿不到vc的锁 就重试10次
proxy.config.cache.read_while_writer_retry.delay 拿不到锁等50ms
proxy.config.log.periodic_tasks_interval 每5s执行一次log相关的任务
proxy.config.ssl.handshake_timeout_in 好多time-out https://docs.trafficserver.apache.org/en/latest/admin-guide/performance/index.en.html#admin-performance-timeouts
proxy.config.ssl.wire_trace_enabled ???没看懂
proxy.config.ssl.wire_trace_addr
proxy.config.ssl.wire_trace_percentage
proxy.config.ssl.wire_trace_server_name
proxy.config.http2.accept_no_activity_timeout
proxy.config.http2.no_activity_timeout_in
proxy.config.allocator.hugepages 设置page大小/proc/sys/vm/nr_overcommit_hugepages
新插件:
stream_editor 通过正则或字符串修改 响应中的内容
mp4 允许拖拽
cache_promote
函数方面:
TSHttpTxnCacheLookupUrlSet 替代 TSCacheUrlSet()
6.1
支持tcp fast open
traffic_ctl 显示默认配置值
自定义错误页面
插件新函数 TSHttpTxnInfoIntGet
log 新tag 标识connect reused
header_rewrite 插件的transaction 调试信息
cachekey 插件
esi 插件
escalate 插件
6.2
有集群
hostdb源码发生变化
proxy.config.http.origin_max_connections_queue 0大于max就会立即失败 >0达到max后额外的将排队 当前限制则立即失败 -1达到max后则阻塞等待
proxy.config.http.origin_max_connections ats去每个源服务器的最大链接数 默认0
proxy.config.http.transaction_no_activity_timeout_out 当transaction熄灭后 继续保持到os链接多长时间
proxy.config.websocket.no_activity_timeout 当websocket熄火后 。。。
proxy.config.net.tcp_congestion_control_in/out 配置cwnd算法
proxy.config.http2.min_concurrent_streams_in, proxy.config.http2.max_active_streams_in and proxy.config.http2.active_timeout_in.
proxy.config.http.transaction_active_timeout_in time-out一到就关闭链接 不管与客户端的传输有没有结束
新插件:
格式化image 成webp ----提供了ats——c++接口 lib/cppapi/include/atscppapi/
惊群效应的插件
cachekey 插件一定要更新
gzip添加remap功能
7.0.x
新特性:http2 ipv6
spdy移除由http2取代
不支持集群 可由父cache和carp插件实现
icp协议有bug 不支持了
proxy.config.cop.active_health_checks 3个值cop检查时候 是否kill manager或server
proxy.config.memory.max_usage
proxy.config.http.strict_uri_parsing 如果uri不是标准的就返回400
proxy.config.hostdb.max_size 默认10G
proxy.config.hostdb.partitions 分区数 默认64
proxy.config.hostdb.max_count 默认-1 关闭最大entry数
插件优化:
authproxy 将请求的授权决定委托给外部HTTP服务。
background fetch 主动从源站获取内容
esi 自定义一些命令 进行一些操作
generator 通过自定义请求中的参数 在cache中生成一块内存
regex revalidate 通过正则强制使cache revalidation
XDebug 允许客户在请求中添加某些字段 对ats调试
新插件:
header frequency
7.1
没有集群 因为 dns 拖后腿导致
因为 hostdb 用到了 cluster 的同步机制,但是社区搞不定这里面的bug,于是就把 hostdb 里用到的 cluster 的部分给砍掉了
ngx 可以当 webserver,可以做 LB,可以做 file cache
ATS 。。。 只有 forward proxy,reverse proxy 。。。
就 ats 这个底子,做个 LB,做个 webserver,分分钟就秒一堆了
不说别的,做个 LB,还支持 LUA,一堆的七层负载均衡得下岗
continuation 是一种模式,这种模式是按照 cpu 的分时多任务的执行模式进行设计
就是协程模式编程
你可以认为 每一个 SM 的回调函数,都是一个 non-intrrupt command
你说的是实现一个假进程,如果你用他们模式做应用层就是TS啦
可以认为 ATS里的每一个线程都是一个 soft cpu,这个 cpu 的指令流水线是通过 Event 来编排,然后指令由 SM 的回调函数实现,
每一个回调函数都相当于是这个 soft cpu 的一个指令
SM 是状态机,里面有很多的回调函数每个函数都相当于是一条soft cpu 的指令
硬件 cpu 运行的是指令还原为可读的代码是 asm,ats 的 ethread 运行的指令就是 SM 的回调函数