- 浏览: 74168 次
- 性别:
- 来自: 文一西路969号
文章分类
最新评论
-
weituotian:
什么鬼?看不懂
PhpStorm+Xampp+Xdebug环境搭建 -
簡單從泚銷夨:
houyujiangjun 写道簡單從泚銷夨 写道houyuj ...
web+native客户端静态资源内置与动态更新 -
houyujiangjun:
簡單從泚銷夨 写道houyuj ...
web+native客户端静态资源内置与动态更新 -
簡單從泚銷夨:
houyujiangjun 写道一年前已经做过,这个问题其实不 ...
web+native客户端静态资源内置与动态更新 -
houyujiangjun:
一年前已经做过,这个问题其实不用这样考虑,建议楼主思考缓存的本 ...
web+native客户端静态资源内置与动态更新
最近有个需求,需要用到图片服务器,对于这个需求,如果走公司统一内部集群,一点问题都没有,只可惜我们的服务必须部署到公有云,也就是说公司的内部工具、服务,我们一般都用不了,如果购买公有云的服务和工具,那又需要提高成本,所以,所以,所以我们自己通过物理机搭建了自己的图片服务器。
技术选型:ATS+Nginx+FastDFS
FastDFS作为图片存储,ATS作为CDN,整体架构如下:
FastDFS架构(from 51CTO网):
ATS(from oschina)
最后进行压测
一台物理机,内存:252G,硬盘:600G+ , cpu:64核 , 网卡:千兆 双网卡,160kb+图片
网卡几乎打满,rt在500ms,线程500,ATS的负载还是很小,ATS本地90%以上在1ms之内返回,所以网卡成了最后的瓶颈点。
===============================================================
附一些资料:
AST 日志: /usr/local/var/log/trafficserver
AST 配置文件:/usr/local/etc/trafficserver
FstDFS配置文件:/etc/fdfs/
sudo /usr/bin/fdfs_test /etc/fdfs/client.conf upload ~/pic/3.pic.jpg
http://sofar.blog.51cto.com/353572/1656160
http://blog.csdn.net/xifeijian/article/details/38567839/ FastDFS安装、配置、部署(一)-安装和部署
http://bbs.chinaunix.net/thread-1941456-1-1.html [FastDFS] FastDFS 配置文件详解
http://bbs.go-news.com/thread-54-1-1.html Trafficserver5.3 安装配置
http://twiki.corp.taobao.com/pub/SRE/OPS/CdnATStest/TS_%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95%E4%B9%8BCache.pdf TS 功能测试之Cache
https://linux.cn/article-3215-1.html Linux终端下 dstat 监控工具
https://docs.trafficserver.apache.org/en/latest/admin-guide/monitoring/statistics/core/cache.en.html cache 监控
trafficserver-5.3.2.tar.bz2
tengine-1.5.2.tar.gz
libfastcommon-1.0.7.tar.gz
fastdfs-5.05.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
======
监控:
sar -n DEV 2
dstat
./traffic_line -r proxy.node.cache_hit_ratio_avg_10s #查询当前缓存服务命中率
./traffic_line -r proxy.node.current_server_connections #到后端源的连接数
./traffic_line -r proxy.node.current_client_connections #前端用户到TServer的连接数
./traffic_line -r proxy.node.user_agent_xacts_per_second #平均每秒处理的并发数
./traffic_line -r proxy.node.client_throughput_out #当前TServer输出到前端的带宽流量(单位Mbps)
=======
Traffic Server 是一套快速、模块化的兼容 HTTP/1.1 的反向代理服务器,与 Nginx 和 Squid 类似,Apache软件基金会发布的最新版本是Apache Traffic Server v5.3.0。Traffic Server的处理能力非常强大,它可以在对内容传输要求非常严格的真实部署环境中处理TB级的数据。
官网:http://trafficserver.apache.org/
http://apache.fayea.com/trafficserver/trafficserver-5.3.0.tar.bz2
1、安装依赖
# yum install tcl-devel pcre-devel
2、源码编译
# cd /usr/local/src
# wget http://apache.fayea.com/trafficserver/trafficserver-5.3.0.tar.bz2
# tar jxf trafficserver-5.3.0.tar.bz2
# cd trafficserver-5.3.0
# ./configure --prefix=/usr/local/trafficserver
# make make install
# cp rc/trafficserver /etc/init.d/# 开机启动
# chmod 755 /etc/init.d/trafficserver && chkconfig --add trafficserver && chkconfig trafficserver on
3、配置
records.config 主配置文件 ,是 key-value 格式的配置文件,负责大部分全局的选项设置
storage.config 用于指定磁盘存储。
remap.config 定义映射规则,用于请求的重写(rewrite),反向代理即在此配置
storage.config举例
/data1/cache 256M
/data2/cache 256M
remap.config举例
map http://www.go-news.com http://192.168.4.56
records.config详解
#ts管理用户名
CONFIG proxy.config.admin.admin_user STRING admin
#配置文件副本数量
CONFIG proxy.config.admin.number_config_bak INT 3
#选项用于指定运行的traffic_server过程,也可以用来指定的配置文件和日志文件的所有权
CONFIG proxy.config.admin.user_id STRING nobody
##############################################################################
# Thread configurations. Docs:
# https://docs.trafficserver.apach ... c-thread-autoconfig
##############################################################################
# TS线程数量根据可用的CPU核数进行调整,默认值为1,即开启
CONFIG proxy.config.exec_thread.autoconfig INT 1
# 上面配置开启,TS CPU核数与TS线程数量的默认比例,默认的缩放比例是1.5。CPU核数*缩放比例=TS线程数量
CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 1.5
# 当proxy.config.exec_thread.autoconfig值为0时,设置TS线程数量
CONFIG proxy.config.exec_thread.limit INT 2
# 设置SSL线程数量,默认是CPU数量和proxy.config.exec_thread.autoconfig.scale的乘积。
# 你可以设置非零的值
CONFIG proxy.config.ssl.number.threads INT 0
# 当启用时设置1,运行一个单独的线程来处理请求。如果禁用(0),那么只有一个线程
CONFIG proxy.config.accept_threads INT 1
# 配置任务的线程池,推荐2
CONFIG proxy.config.task_threads INT 2
# 设置每块磁盘分配多少的I/O线程
CONFIG proxy.config.cache.threads_per_disk INT 8
# https://docs.trafficserver.apach ... xec-thread-affinity
CONFIG proxy.config.exec_thread.affinity INT 0
##############################################################################
# Specify server addresses and ports to bind for HTTP and HTTPS. Docs:
# https://docs.trafficserver.apach ... g-http-server-ports
##############################################################################
# 配置端口,默认8080
CONFIG proxy.config.http.server_ports STRING 80
##############################################################################
# Via: headers. Docs:
# https://docs.trafficserver.apach ... rt-response-via-str
##############################################################################
# 配置via字段的处理方式,1 用正常的信息来更新via
CONFIG proxy.config.http.insert_request_via_str INT 1
# 配置如何处理响应到客户端的via字段,0不做修改
# 1 用正常的信息来更新via
# 2 用详细信息来更新via
# 3 用最详细信息来更新via
CONFIG proxy.config.http.insert_response_via_str INT 0
##############################################################################
# Parent proxy configuration, in addition to these settings also see parent.config. Docs:
# https://docs.trafficserver.apach ... proxy-configuration
# https://docs.trafficserver.apach ... rent.config.en.html
##############################################################################
# 设置关闭父节点
CONFIG proxy.config.http.parent_proxy_routing_enable INT 0
# 当父节点不可用时,设置重试时间
CONFIG proxy.config.http.parent_proxy.retry_time INT 300
# 父节点不可用时,设置超时时间
CONFIG proxy.config.http.parent_proxy.connect_attempts_timeout INT 30
# 配置发送身份验证信息到父节点
CONFIG proxy.config.http.forward.proxy_auth_to_parent INT 0
# 设置不可缓存请求使用旁路请求父节点
CONFIG proxy.config.http.uncacheable_requests_bypass_parent INT 1
##############################################################################
# HTTP connection timeouts (secs). Docs:
# https://docs.trafficserver.apach ... connection-timeouts
##############################################################################
# 指定事务结束后为保证后续进入请求而继续打开的连接时间
CONFIG proxy.config.http.keep_alive_no_activity_timeout_in INT 115
# 指定事务结束后为保证后续出口请求而继续打开的连接时间
CONFIG proxy.config.http.keep_alive_no_activity_timeout_out INT 120
# 指定如果发生网络拥塞时(入),ts服务器多长时间后与客户端断开连接
CONFIG proxy.config.http.transaction_no_activity_timeout_in INT 30
# 指定如果发生网络拥塞时(出),ts服务器多长时间后与客户端断开连接
CONFIG proxy.config.http.transaction_no_activity_timeout_out INT 30
# 和客户端保持连接的最长时间(入)
CONFIG proxy.config.http.transaction_active_timeout_in INT 900
# 和客户端保持连接的最长时间(出)
CONFIG proxy.config.http.transaction_active_timeout_out INT 0
# 关闭没有活动的连接的超时时间间隔
CONFIG proxy.config.http.accept_no_activity_timeout INT 120
# 设置连接闲置超时设置
CONFIG proxy.config.net.default_inactivity_timeout INT 86400
##############################################################################
# Origin server connect attempts. Docs:
# https://docs.trafficserver.apach ... er-connect-attempts
##############################################################################
# 当源服务器没有响应时,ts最大重试次数
CONFIG proxy.config.http.connect_attempts_max_retries INT 6
# 当源服务器不可用时,ts最大重试次数
CONFIG proxy.config.http.connect_attempts_max_retries_dead_server INT 3
# 如果该服务器DNS有做轮循,则在轮循条目标记为down之前允许尝试连接失败的最大值
CONFIG proxy.config.http.connect_attempts_rr_retries INT 3
# 源服务器连接的超时值
CONFIG proxy.config.http.connect_attempts_timeout INT 30
# POST/PUT请求时,源服务器的超时值
CONFIG proxy.config.http.post_connect_attempts_timeout INT 1800
# 指定多长时间后,TS标记源服务器为down掉
CONFIG proxy.config.http.down_server.cache_time INT 300
# 在一个客户端因为源服务器相应太慢而放弃请求之后到TS标记该服务器不可达之间的秒数
CONFIG proxy.config.http.down_server.abort_threshold INT 10
##############################################################################
# Negative response caching, for redirects and errors. Docs:
# https://docs.trafficserver.apach ... ve-response-caching
##############################################################################
# 开启/禁用负响应缓存.当TS缓存到一个负响应时(如404),下一客户端请求相应URL时,直接由TS服务器返回负响应
# 负响应包括:204 305 400 403 404 405 500 501 502 503 504
CONFIG proxy.config.http.negative_caching_enabled INT 0
# 设置缓存负响应时间
CONFIG proxy.config.http.negative_caching_lifetime INT 1800
##############################################################################
# Proxy users variables. Docs:
# https://docs.trafficserver.apach ... roxy-user-variables
##############################################################################
# 启用之后将添加Client_IP头保留客户端的IP地址
CONFIG proxy.config.http.anonymize_insert_client_ip INT 1
# 启用后,将添加客户端的IP地址添加到x-forward-for
CONFIG proxy.config.http.insert_squid_x_forwarded_for INT 1
##############################################################################
# Security. Docs:
# https://docs.trafficserver.apache.org/records.config#security
##############################################################################
# 启用/禁用HTTP PUSH的选项
CONFIG proxy.config.http.push_method_enabled INT 0
##############################################################################
# Enable / disable HTTP caching. Useful for testing, but also as an
# overridable (per remap) config
##############################################################################
# 配置开启http缓存
CONFIG proxy.config.http.cache.http INT 1
##############################################################################
# Cache control. Docs:
# https://docs.trafficserver.apach ... onfig#cache-control
# https://docs.trafficserver.apach ... ache.config.en.html
##############################################################################
# 是否忽略所有客户端中的max-age头
CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
# 启用后使所有的Accept-Encoding头部规范化
CONFIG proxy.config.http.normalize_ae_gzip INT 1
# 缓存响应cookie的五个选项
# 0 - 不缓存所有cookies响应
# 1 - 只缓存content-type
# 2 - 只缓存图片
# 3 - 缓存所有的文字内容类型
# 4 - 缓存为所有除了系统响应的没有”Set-Cookie”或者有”Cache-Control:public”的文字内容类型
# ts缓存cookies操作
CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1
# 缓存动态文件内容
CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1
# https://docs.trafficserver.apach ... -when-to-revalidate
# 重新验证内容的5个选项
# 0 - 默认.使用缓存指令或启发式缓存
# 1 - 启发式缓存
# 2 - 总是陈旧的(总是重新验证)
# 3 - 不刷新
# 4 - 如果请求含有条件则验证,否则使用默认值
# 如果该请求中包含的If-Modified-since,然后TS的总是重新验证缓存的内容,
# 并使用客户端的代理请求的If-Modified-Since的头。
# TS重新验证缓存机制
CONFIG proxy.config.http.cache.when_to_revalidate INT 0
# https://docs.trafficserver.apach ... he-required-headers
# 配置TS缓存所需要的头部
# 所需头部的三个选项:
# 0 - 不需要使用头部来决定文档是否可以缓存
# 1 - 需要Last-Modified:", "Expires:", 或者 "Cache-Control: max-age"
# 2 - 明确缓存生命周期需要的,"Expires:" 或者"Cache-Control: max-age
CONFIG proxy.config.http.cache.required_headers INT 2
##############################################################################
# Heuristic cache expiration. Docs:
# https://docs.trafficserver.apach ... euristic-expiration
##############################################################################
# 一个在缓存中没有过期的并且没有过期时间的对象能被保持的最短时间
CONFIG proxy.config.http.cache.heuristic_min_lifetime INT 3600
# 一个在缓存中没有过期的并且没有过期时间的对象能被保持的最长时间
CONFIG proxy.config.http.cache.heuristic_max_lifetime INT 86400
# 设置这个变量来指定计算有效期的老化因子。TS存储该对象从其上次修改后这个百分比的时间。默认值为0.1
CONFIG proxy.config.http.cache.heuristic_lm_factor FLOAT 0.10
##############################################################################
# Network. Docs:
# https://docs.trafficserver.apache.org/records.config#network
##############################################################################
# 配置最大网络连接限制
CONFIG proxy.config.net.connections_throttle INT 30000
##############################################################################
# RAM and disk cache configurations. Docs:
# https://docs.trafficserver.apache.org/records.config#ram-cache
# https://docs.trafficserver.apach ... rage.config.en.html
##############################################################################
# 设置RAM缓存大小
CONFIG proxy.config.cache.ram_cache.size INT -1
# 用于确定写入缓存的object大小,只有小于该数值的object才会缓存,默认为4M
CONFIG proxy.config.cache.ram_cache_cutoff INT 4194304
# https://docs.trafficserver.apach ... imits-http-max-alts
# 指定TS缓存一个对象不同版本的数目。默认为:5
CONFIG proxy.config.cache.limits.http.max_alts INT 5
# https://docs.trafficserver.apach ... -cache-max-doc-size
# 存储在缓存中最大的文件大小,设置为0即禁用最大尺寸检查
CONFIG proxy.config.cache.max_doc_size INT 0
# 配置最小,平均对象大小.默认是8000
CONFIG proxy.config.cache.min_average_object_size INT 8000
##############################################################################
# Logging Config. Docs:
# https://docs.trafficserver.apach ... gging-configuration
# https://docs.trafficserver.apach ... _xml.config.en.html
##############################################################################
# 开启自定义log选项
CONFIG proxy.config.log.custom_logs_enabled INT 1
# 可启用的日志记录:
# 0:全部不记录
# 1:只记录错误
# 2:只记录事务日志
# 3:全部记录(错误和事务)
CONFIG proxy.config.log.logging_enabled INT 0
# 分配给日志目录的空间大小(MB)
CONFIG proxy.config.log.max_space_mb_for_logs INT 25000
# 用来防止磁盘被日志打满
CONFIG proxy.config.log.max_space_mb_headroom INT 1000
# 开启/禁用squid日志格式
CONFIG proxy.config.log.squid_log_enabled INT 0
# squid日志格式类型。1=ASCII 2=binary
CONFIG proxy.config.log.squid_log_is_ascii INT 0
# 日志文件的滚动
# 0 - 禁用日志文件的滚动
# 1 - 启用在特定的时间间隔对日志文件进行滚动.(需要配合proxy.config.log.rolling_interval_sec和proxy.config.log.rolling_offset_hr)
# 2 - 启用在指定文件大小对日志文件进行滚动(需要配合proxy.config.log.rolling_size_mb )
# 3 - 启用在指定文件大小或特定的时间间隔对日志文件进行滚动(以先发生优先)
# 4 - 启用在指定的时间间隔中日志文件达到特定大小进行滚动
CONFIG proxy.config.log.rolling_enabled INT 1
# 日志滚动间隔秒数。最低为300秒,最大为86400,即1天
CONFIG proxy.config.log.rolling_interval_sec INT 86400
# 当日志文件多大的时对日志进行滚动
CONFIG proxy.config.log.rolling_size_mb INT 10
# 是否启用滚动文件的自动删除
CONFIG proxy.config.log.auto_delete_rolled_files INT 1
##############################################################################
# These settings control remapping, and if the proxy allows (open) forward proxy or not. Docs:
# https://docs.trafficserver.apach ... fig#url-remap-rules
# https://docs.trafficserver.apach ... emap.config.en.html
##############################################################################
# 设置为1时,如果你想TS服务请求从源服务器的映射的规则的remap.config文件中列出
CONFIG proxy.config.url_remap.remap_required INT 1
# https://docs.trafficserver.apach ... p-pristine-host-hdr
# 设置为1时,将保留在重映射请求的客户端主机头,默认是0
CONFIG proxy.config.url_remap.pristine_host_hdr INT 1
# https://docs.trafficserver.apach ... onfig#reverse-proxy
# 启用\关启http反向代理
CONFIG proxy.config.reverse_proxy.enabled INT 1
##############################################################################
# SSL Termination. Docs:
# https://docs.trafficserver.apach ... lated-configuration
# https://docs.trafficserver.apach ... cert.config.en.html
##############################################################################
# 配置TS验证原始服务器证书的CA
CONFIG proxy.config.ssl.client.verify.server INT 0
# 指定CA签发文件的位置
CONFIG proxy.config.ssl.client.CA.cert.filename STRING NULL
# 下面两个变更设置TS使用HTTPS连接使用的加密方法
CONFIG proxy.config.ssl.server.cipher_suite STRING ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:RC4-SHA:RC4-MD5:AES128-SHA:AES256-SHA:DES-CBC3-SHA!SRP:!DSS:!PSK:!aNULL:!eNULL:!SSLv2
##############################################################################
# ICP Configuration. Docs:
# https://docs.trafficserver.apach ... g#icp-configuration
# https://docs.trafficserver.apach ... /icp.config.en.html
##############################################################################
# ICP模式
# 0 = ICP关闭
# 1 = 允许接收ICP查询
# 2 = 允许发送、接收ICP查询
CONFIG proxy.config.icp.enabled INT 0
##############################################################################
# Debugging. Docs:
# https://docs.trafficserver.apach ... gging-configuration
##############################################################################
# 可以使用正则表达式来匹配debug的主题名字,但是相应的性能也会受到一定影响
CONFIG proxy.config.diags.debug.enabled INT 0
# 匹配http dns字符
CONFIG proxy.config.diags.debug.tags STRING http.*|dns.*
# ToDo: Undocumented
# 跟踪内存泄露的利器,但是需要使用ink分配器
CONFIG proxy.config.dump_mem_info_frequency INT 0
# 记录慢日志的阈值.当请求大于多少毫秒时会被记录至慢日志,当该参数值大于0时即启用
CONFIG proxy.config.http.slow.log.threshold INT 0
##############################################################################
# Cluster Subsystem. Docs:
# https://docs.trafficserver.apache.org/records.config#cluster
##############################################################################
# 集群类型需要重启才能生效
# 1=全集群模式
# 2=管理模式
# 3=非集群模式
LOCAL proxy.local.cluster.type INT 3
# 设置集群模式的以太网口
CONFIG proxy.config.cluster.ethernet_interface STRING lo
# 设置集群端口
CONFIG proxy.config.cluster.cluster_port INT 8086
# 配置可靠的服务端口.可靠端口用于发送配置信息在集群节点间,所有的集群节点间必须使用相同的可靠服务端口
CONFIG proxy.config.cluster.rsport INT 8088
# 指定组播端口。组播端口是用于节点识别。在集群中所有节点必须使用相同的组播端口
CONFIG proxy.config.cluster.mcport INT 8089
# 指定一个组播地址
CONFIG proxy.config.cluster.mc_group_addr STRING 224.0.1.37
4、清缓存配置
编辑需增加的IP在配置文件
ip_allow.config
src_ip=127.0.0.1 action=ip_allow method=ALL
清除单个url
curl -X PURGE -v http://www.go-news.com/ -x 127.0.0.1:80
清除所有缓存
停止server
/usr/local/trafficserver/bin/traffic_server -Cclear
启动server
5、常用命令
#查询当前缓存服务命中率
/usr/local/trafficserver/bin/traffic_line -r proxy.node.cache_hit_ratio_avg_10s
#到后端源的连接数
/usr/local/trafficserver/bin/traffic_line -r proxy.node.current_server_connections
#前端用户到TServer的连接数
/usr/local/trafficserver/bin/traffic_line -r proxy.node.current_client_connections
#平均每秒处理的并发数
/usr/local/trafficserver/bin/traffic_line -r proxy.node.user_agent_xacts_per_second
#当前TServer输出到前端的带宽流量(单位Mbps)
/usr/local/trafficserver/bin/traffic_line -r proxy.node.client_throughput_out
#查看配置的值
/usr/local/trafficserver/bin/traffic_line -r 变量名
#修改配置
/usr/local/trafficserver/bin/traffic_line -s 变量名 -v 变量值
#重新读取配置文件
/usr/local/trafficserver/bin/traffic_line -x
#在不重启服务下,使配置生效
/usr/local/trafficserver/bin/traffic_line -L
技术选型:ATS+Nginx+FastDFS
FastDFS作为图片存储,ATS作为CDN,整体架构如下:
FastDFS架构(from 51CTO网):
ATS(from oschina)
最后进行压测
一台物理机,内存:252G,硬盘:600G+ , cpu:64核 , 网卡:千兆 双网卡,160kb+图片
网卡几乎打满,rt在500ms,线程500,ATS的负载还是很小,ATS本地90%以上在1ms之内返回,所以网卡成了最后的瓶颈点。
===============================================================
附一些资料:
AST 日志: /usr/local/var/log/trafficserver
AST 配置文件:/usr/local/etc/trafficserver
FstDFS配置文件:/etc/fdfs/
sudo /usr/bin/fdfs_test /etc/fdfs/client.conf upload ~/pic/3.pic.jpg
http://sofar.blog.51cto.com/353572/1656160
http://blog.csdn.net/xifeijian/article/details/38567839/ FastDFS安装、配置、部署(一)-安装和部署
http://bbs.chinaunix.net/thread-1941456-1-1.html [FastDFS] FastDFS 配置文件详解
http://bbs.go-news.com/thread-54-1-1.html Trafficserver5.3 安装配置
http://twiki.corp.taobao.com/pub/SRE/OPS/CdnATStest/TS_%E5%8A%9F%E8%83%BD%E6%B5%8B%E8%AF%95%E4%B9%8BCache.pdf TS 功能测试之Cache
https://linux.cn/article-3215-1.html Linux终端下 dstat 监控工具
https://docs.trafficserver.apache.org/en/latest/admin-guide/monitoring/statistics/core/cache.en.html cache 监控
trafficserver-5.3.2.tar.bz2
tengine-1.5.2.tar.gz
libfastcommon-1.0.7.tar.gz
fastdfs-5.05.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
======
监控:
sar -n DEV 2
dstat
./traffic_line -r proxy.node.cache_hit_ratio_avg_10s #查询当前缓存服务命中率
./traffic_line -r proxy.node.current_server_connections #到后端源的连接数
./traffic_line -r proxy.node.current_client_connections #前端用户到TServer的连接数
./traffic_line -r proxy.node.user_agent_xacts_per_second #平均每秒处理的并发数
./traffic_line -r proxy.node.client_throughput_out #当前TServer输出到前端的带宽流量(单位Mbps)
=======
Traffic Server 是一套快速、模块化的兼容 HTTP/1.1 的反向代理服务器,与 Nginx 和 Squid 类似,Apache软件基金会发布的最新版本是Apache Traffic Server v5.3.0。Traffic Server的处理能力非常强大,它可以在对内容传输要求非常严格的真实部署环境中处理TB级的数据。
官网:http://trafficserver.apache.org/
http://apache.fayea.com/trafficserver/trafficserver-5.3.0.tar.bz2
1、安装依赖
# yum install tcl-devel pcre-devel
2、源码编译
# cd /usr/local/src
# wget http://apache.fayea.com/trafficserver/trafficserver-5.3.0.tar.bz2
# tar jxf trafficserver-5.3.0.tar.bz2
# cd trafficserver-5.3.0
# ./configure --prefix=/usr/local/trafficserver
# make make install
# cp rc/trafficserver /etc/init.d/# 开机启动
# chmod 755 /etc/init.d/trafficserver && chkconfig --add trafficserver && chkconfig trafficserver on
3、配置
records.config 主配置文件 ,是 key-value 格式的配置文件,负责大部分全局的选项设置
storage.config 用于指定磁盘存储。
remap.config 定义映射规则,用于请求的重写(rewrite),反向代理即在此配置
storage.config举例
/data1/cache 256M
/data2/cache 256M
remap.config举例
map http://www.go-news.com http://192.168.4.56
records.config详解
#ts管理用户名
CONFIG proxy.config.admin.admin_user STRING admin
#配置文件副本数量
CONFIG proxy.config.admin.number_config_bak INT 3
#选项用于指定运行的traffic_server过程,也可以用来指定的配置文件和日志文件的所有权
CONFIG proxy.config.admin.user_id STRING nobody
##############################################################################
# Thread configurations. Docs:
# https://docs.trafficserver.apach ... c-thread-autoconfig
##############################################################################
# TS线程数量根据可用的CPU核数进行调整,默认值为1,即开启
CONFIG proxy.config.exec_thread.autoconfig INT 1
# 上面配置开启,TS CPU核数与TS线程数量的默认比例,默认的缩放比例是1.5。CPU核数*缩放比例=TS线程数量
CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 1.5
# 当proxy.config.exec_thread.autoconfig值为0时,设置TS线程数量
CONFIG proxy.config.exec_thread.limit INT 2
# 设置SSL线程数量,默认是CPU数量和proxy.config.exec_thread.autoconfig.scale的乘积。
# 你可以设置非零的值
CONFIG proxy.config.ssl.number.threads INT 0
# 当启用时设置1,运行一个单独的线程来处理请求。如果禁用(0),那么只有一个线程
CONFIG proxy.config.accept_threads INT 1
# 配置任务的线程池,推荐2
CONFIG proxy.config.task_threads INT 2
# 设置每块磁盘分配多少的I/O线程
CONFIG proxy.config.cache.threads_per_disk INT 8
# https://docs.trafficserver.apach ... xec-thread-affinity
CONFIG proxy.config.exec_thread.affinity INT 0
##############################################################################
# Specify server addresses and ports to bind for HTTP and HTTPS. Docs:
# https://docs.trafficserver.apach ... g-http-server-ports
##############################################################################
# 配置端口,默认8080
CONFIG proxy.config.http.server_ports STRING 80
##############################################################################
# Via: headers. Docs:
# https://docs.trafficserver.apach ... rt-response-via-str
##############################################################################
# 配置via字段的处理方式,1 用正常的信息来更新via
CONFIG proxy.config.http.insert_request_via_str INT 1
# 配置如何处理响应到客户端的via字段,0不做修改
# 1 用正常的信息来更新via
# 2 用详细信息来更新via
# 3 用最详细信息来更新via
CONFIG proxy.config.http.insert_response_via_str INT 0
##############################################################################
# Parent proxy configuration, in addition to these settings also see parent.config. Docs:
# https://docs.trafficserver.apach ... proxy-configuration
# https://docs.trafficserver.apach ... rent.config.en.html
##############################################################################
# 设置关闭父节点
CONFIG proxy.config.http.parent_proxy_routing_enable INT 0
# 当父节点不可用时,设置重试时间
CONFIG proxy.config.http.parent_proxy.retry_time INT 300
# 父节点不可用时,设置超时时间
CONFIG proxy.config.http.parent_proxy.connect_attempts_timeout INT 30
# 配置发送身份验证信息到父节点
CONFIG proxy.config.http.forward.proxy_auth_to_parent INT 0
# 设置不可缓存请求使用旁路请求父节点
CONFIG proxy.config.http.uncacheable_requests_bypass_parent INT 1
##############################################################################
# HTTP connection timeouts (secs). Docs:
# https://docs.trafficserver.apach ... connection-timeouts
##############################################################################
# 指定事务结束后为保证后续进入请求而继续打开的连接时间
CONFIG proxy.config.http.keep_alive_no_activity_timeout_in INT 115
# 指定事务结束后为保证后续出口请求而继续打开的连接时间
CONFIG proxy.config.http.keep_alive_no_activity_timeout_out INT 120
# 指定如果发生网络拥塞时(入),ts服务器多长时间后与客户端断开连接
CONFIG proxy.config.http.transaction_no_activity_timeout_in INT 30
# 指定如果发生网络拥塞时(出),ts服务器多长时间后与客户端断开连接
CONFIG proxy.config.http.transaction_no_activity_timeout_out INT 30
# 和客户端保持连接的最长时间(入)
CONFIG proxy.config.http.transaction_active_timeout_in INT 900
# 和客户端保持连接的最长时间(出)
CONFIG proxy.config.http.transaction_active_timeout_out INT 0
# 关闭没有活动的连接的超时时间间隔
CONFIG proxy.config.http.accept_no_activity_timeout INT 120
# 设置连接闲置超时设置
CONFIG proxy.config.net.default_inactivity_timeout INT 86400
##############################################################################
# Origin server connect attempts. Docs:
# https://docs.trafficserver.apach ... er-connect-attempts
##############################################################################
# 当源服务器没有响应时,ts最大重试次数
CONFIG proxy.config.http.connect_attempts_max_retries INT 6
# 当源服务器不可用时,ts最大重试次数
CONFIG proxy.config.http.connect_attempts_max_retries_dead_server INT 3
# 如果该服务器DNS有做轮循,则在轮循条目标记为down之前允许尝试连接失败的最大值
CONFIG proxy.config.http.connect_attempts_rr_retries INT 3
# 源服务器连接的超时值
CONFIG proxy.config.http.connect_attempts_timeout INT 30
# POST/PUT请求时,源服务器的超时值
CONFIG proxy.config.http.post_connect_attempts_timeout INT 1800
# 指定多长时间后,TS标记源服务器为down掉
CONFIG proxy.config.http.down_server.cache_time INT 300
# 在一个客户端因为源服务器相应太慢而放弃请求之后到TS标记该服务器不可达之间的秒数
CONFIG proxy.config.http.down_server.abort_threshold INT 10
##############################################################################
# Negative response caching, for redirects and errors. Docs:
# https://docs.trafficserver.apach ... ve-response-caching
##############################################################################
# 开启/禁用负响应缓存.当TS缓存到一个负响应时(如404),下一客户端请求相应URL时,直接由TS服务器返回负响应
# 负响应包括:204 305 400 403 404 405 500 501 502 503 504
CONFIG proxy.config.http.negative_caching_enabled INT 0
# 设置缓存负响应时间
CONFIG proxy.config.http.negative_caching_lifetime INT 1800
##############################################################################
# Proxy users variables. Docs:
# https://docs.trafficserver.apach ... roxy-user-variables
##############################################################################
# 启用之后将添加Client_IP头保留客户端的IP地址
CONFIG proxy.config.http.anonymize_insert_client_ip INT 1
# 启用后,将添加客户端的IP地址添加到x-forward-for
CONFIG proxy.config.http.insert_squid_x_forwarded_for INT 1
##############################################################################
# Security. Docs:
# https://docs.trafficserver.apache.org/records.config#security
##############################################################################
# 启用/禁用HTTP PUSH的选项
CONFIG proxy.config.http.push_method_enabled INT 0
##############################################################################
# Enable / disable HTTP caching. Useful for testing, but also as an
# overridable (per remap) config
##############################################################################
# 配置开启http缓存
CONFIG proxy.config.http.cache.http INT 1
##############################################################################
# Cache control. Docs:
# https://docs.trafficserver.apach ... onfig#cache-control
# https://docs.trafficserver.apach ... ache.config.en.html
##############################################################################
# 是否忽略所有客户端中的max-age头
CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
# 启用后使所有的Accept-Encoding头部规范化
CONFIG proxy.config.http.normalize_ae_gzip INT 1
# 缓存响应cookie的五个选项
# 0 - 不缓存所有cookies响应
# 1 - 只缓存content-type
# 2 - 只缓存图片
# 3 - 缓存所有的文字内容类型
# 4 - 缓存为所有除了系统响应的没有”Set-Cookie”或者有”Cache-Control:public”的文字内容类型
# ts缓存cookies操作
CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1
# 缓存动态文件内容
CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1
# https://docs.trafficserver.apach ... -when-to-revalidate
# 重新验证内容的5个选项
# 0 - 默认.使用缓存指令或启发式缓存
# 1 - 启发式缓存
# 2 - 总是陈旧的(总是重新验证)
# 3 - 不刷新
# 4 - 如果请求含有条件则验证,否则使用默认值
# 如果该请求中包含的If-Modified-since,然后TS的总是重新验证缓存的内容,
# 并使用客户端的代理请求的If-Modified-Since的头。
# TS重新验证缓存机制
CONFIG proxy.config.http.cache.when_to_revalidate INT 0
# https://docs.trafficserver.apach ... he-required-headers
# 配置TS缓存所需要的头部
# 所需头部的三个选项:
# 0 - 不需要使用头部来决定文档是否可以缓存
# 1 - 需要Last-Modified:", "Expires:", 或者 "Cache-Control: max-age"
# 2 - 明确缓存生命周期需要的,"Expires:" 或者"Cache-Control: max-age
CONFIG proxy.config.http.cache.required_headers INT 2
##############################################################################
# Heuristic cache expiration. Docs:
# https://docs.trafficserver.apach ... euristic-expiration
##############################################################################
# 一个在缓存中没有过期的并且没有过期时间的对象能被保持的最短时间
CONFIG proxy.config.http.cache.heuristic_min_lifetime INT 3600
# 一个在缓存中没有过期的并且没有过期时间的对象能被保持的最长时间
CONFIG proxy.config.http.cache.heuristic_max_lifetime INT 86400
# 设置这个变量来指定计算有效期的老化因子。TS存储该对象从其上次修改后这个百分比的时间。默认值为0.1
CONFIG proxy.config.http.cache.heuristic_lm_factor FLOAT 0.10
##############################################################################
# Network. Docs:
# https://docs.trafficserver.apache.org/records.config#network
##############################################################################
# 配置最大网络连接限制
CONFIG proxy.config.net.connections_throttle INT 30000
##############################################################################
# RAM and disk cache configurations. Docs:
# https://docs.trafficserver.apache.org/records.config#ram-cache
# https://docs.trafficserver.apach ... rage.config.en.html
##############################################################################
# 设置RAM缓存大小
CONFIG proxy.config.cache.ram_cache.size INT -1
# 用于确定写入缓存的object大小,只有小于该数值的object才会缓存,默认为4M
CONFIG proxy.config.cache.ram_cache_cutoff INT 4194304
# https://docs.trafficserver.apach ... imits-http-max-alts
# 指定TS缓存一个对象不同版本的数目。默认为:5
CONFIG proxy.config.cache.limits.http.max_alts INT 5
# https://docs.trafficserver.apach ... -cache-max-doc-size
# 存储在缓存中最大的文件大小,设置为0即禁用最大尺寸检查
CONFIG proxy.config.cache.max_doc_size INT 0
# 配置最小,平均对象大小.默认是8000
CONFIG proxy.config.cache.min_average_object_size INT 8000
##############################################################################
# Logging Config. Docs:
# https://docs.trafficserver.apach ... gging-configuration
# https://docs.trafficserver.apach ... _xml.config.en.html
##############################################################################
# 开启自定义log选项
CONFIG proxy.config.log.custom_logs_enabled INT 1
# 可启用的日志记录:
# 0:全部不记录
# 1:只记录错误
# 2:只记录事务日志
# 3:全部记录(错误和事务)
CONFIG proxy.config.log.logging_enabled INT 0
# 分配给日志目录的空间大小(MB)
CONFIG proxy.config.log.max_space_mb_for_logs INT 25000
# 用来防止磁盘被日志打满
CONFIG proxy.config.log.max_space_mb_headroom INT 1000
# 开启/禁用squid日志格式
CONFIG proxy.config.log.squid_log_enabled INT 0
# squid日志格式类型。1=ASCII 2=binary
CONFIG proxy.config.log.squid_log_is_ascii INT 0
# 日志文件的滚动
# 0 - 禁用日志文件的滚动
# 1 - 启用在特定的时间间隔对日志文件进行滚动.(需要配合proxy.config.log.rolling_interval_sec和proxy.config.log.rolling_offset_hr)
# 2 - 启用在指定文件大小对日志文件进行滚动(需要配合proxy.config.log.rolling_size_mb )
# 3 - 启用在指定文件大小或特定的时间间隔对日志文件进行滚动(以先发生优先)
# 4 - 启用在指定的时间间隔中日志文件达到特定大小进行滚动
CONFIG proxy.config.log.rolling_enabled INT 1
# 日志滚动间隔秒数。最低为300秒,最大为86400,即1天
CONFIG proxy.config.log.rolling_interval_sec INT 86400
# 当日志文件多大的时对日志进行滚动
CONFIG proxy.config.log.rolling_size_mb INT 10
# 是否启用滚动文件的自动删除
CONFIG proxy.config.log.auto_delete_rolled_files INT 1
##############################################################################
# These settings control remapping, and if the proxy allows (open) forward proxy or not. Docs:
# https://docs.trafficserver.apach ... fig#url-remap-rules
# https://docs.trafficserver.apach ... emap.config.en.html
##############################################################################
# 设置为1时,如果你想TS服务请求从源服务器的映射的规则的remap.config文件中列出
CONFIG proxy.config.url_remap.remap_required INT 1
# https://docs.trafficserver.apach ... p-pristine-host-hdr
# 设置为1时,将保留在重映射请求的客户端主机头,默认是0
CONFIG proxy.config.url_remap.pristine_host_hdr INT 1
# https://docs.trafficserver.apach ... onfig#reverse-proxy
# 启用\关启http反向代理
CONFIG proxy.config.reverse_proxy.enabled INT 1
##############################################################################
# SSL Termination. Docs:
# https://docs.trafficserver.apach ... lated-configuration
# https://docs.trafficserver.apach ... cert.config.en.html
##############################################################################
# 配置TS验证原始服务器证书的CA
CONFIG proxy.config.ssl.client.verify.server INT 0
# 指定CA签发文件的位置
CONFIG proxy.config.ssl.client.CA.cert.filename STRING NULL
# 下面两个变更设置TS使用HTTPS连接使用的加密方法
CONFIG proxy.config.ssl.server.cipher_suite STRING ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:RC4-SHA:RC4-MD5:AES128-SHA:AES256-SHA:DES-CBC3-SHA!SRP:!DSS:!PSK:!aNULL:!eNULL:!SSLv2
##############################################################################
# ICP Configuration. Docs:
# https://docs.trafficserver.apach ... g#icp-configuration
# https://docs.trafficserver.apach ... /icp.config.en.html
##############################################################################
# ICP模式
# 0 = ICP关闭
# 1 = 允许接收ICP查询
# 2 = 允许发送、接收ICP查询
CONFIG proxy.config.icp.enabled INT 0
##############################################################################
# Debugging. Docs:
# https://docs.trafficserver.apach ... gging-configuration
##############################################################################
# 可以使用正则表达式来匹配debug的主题名字,但是相应的性能也会受到一定影响
CONFIG proxy.config.diags.debug.enabled INT 0
# 匹配http dns字符
CONFIG proxy.config.diags.debug.tags STRING http.*|dns.*
# ToDo: Undocumented
# 跟踪内存泄露的利器,但是需要使用ink分配器
CONFIG proxy.config.dump_mem_info_frequency INT 0
# 记录慢日志的阈值.当请求大于多少毫秒时会被记录至慢日志,当该参数值大于0时即启用
CONFIG proxy.config.http.slow.log.threshold INT 0
##############################################################################
# Cluster Subsystem. Docs:
# https://docs.trafficserver.apache.org/records.config#cluster
##############################################################################
# 集群类型需要重启才能生效
# 1=全集群模式
# 2=管理模式
# 3=非集群模式
LOCAL proxy.local.cluster.type INT 3
# 设置集群模式的以太网口
CONFIG proxy.config.cluster.ethernet_interface STRING lo
# 设置集群端口
CONFIG proxy.config.cluster.cluster_port INT 8086
# 配置可靠的服务端口.可靠端口用于发送配置信息在集群节点间,所有的集群节点间必须使用相同的可靠服务端口
CONFIG proxy.config.cluster.rsport INT 8088
# 指定组播端口。组播端口是用于节点识别。在集群中所有节点必须使用相同的组播端口
CONFIG proxy.config.cluster.mcport INT 8089
# 指定一个组播地址
CONFIG proxy.config.cluster.mc_group_addr STRING 224.0.1.37
4、清缓存配置
编辑需增加的IP在配置文件
ip_allow.config
src_ip=127.0.0.1 action=ip_allow method=ALL
清除单个url
curl -X PURGE -v http://www.go-news.com/ -x 127.0.0.1:80
清除所有缓存
停止server
/usr/local/trafficserver/bin/traffic_server -Cclear
启动server
5、常用命令
#查询当前缓存服务命中率
/usr/local/trafficserver/bin/traffic_line -r proxy.node.cache_hit_ratio_avg_10s
#到后端源的连接数
/usr/local/trafficserver/bin/traffic_line -r proxy.node.current_server_connections
#前端用户到TServer的连接数
/usr/local/trafficserver/bin/traffic_line -r proxy.node.current_client_connections
#平均每秒处理的并发数
/usr/local/trafficserver/bin/traffic_line -r proxy.node.user_agent_xacts_per_second
#当前TServer输出到前端的带宽流量(单位Mbps)
/usr/local/trafficserver/bin/traffic_line -r proxy.node.client_throughput_out
#查看配置的值
/usr/local/trafficserver/bin/traffic_line -r 变量名
#修改配置
/usr/local/trafficserver/bin/traffic_line -s 变量名 -v 变量值
#重新读取配置文件
/usr/local/trafficserver/bin/traffic_line -x
#在不重启服务下,使配置生效
/usr/local/trafficserver/bin/traffic_line -L
相关推荐
很抱歉,但根据您给出的信息,"ATS+TC+DSB+液晶+红外摇控+DS.zip" 和 "ATS+TC+DSB+液晶+红外摇控+DS.rar" 这些描述似乎并不包含具体的知识点,而是可能代表了一组电子设备或系统的组件。ATS可能指Advanced Traffic ...
标题中的“ATS+DRT_2018_excel_”暗示了这可能是一个关于ATS(Application Tracking System)和DRT(Direct Response Technology)在2018年数据的Excel电子表格。ATS通常用于招聘过程自动化,帮助公司管理求职者的...
挑战ATS + EchoUser提交USDA创新挑战赛入门本地运行该应用程序使用进行一些构建,并运行静态服务器来托管内容。 开始: 如果尚未安装 ,请安装它将git repo克隆到您拥有权限的用户拥有的目录中获取开发人员依赖项: ...
其目的是帮助您浏览All Things Somali,ATS Facebook和Somali Vlogs上的内容,并继续关注那些内容。 您可以分享最近的新闻或一段时间以来最有趣的视频博客。 随时分享对您重要的内容。 因此,现在就开始点击+添加到...
炬芯(Actions) ATS3019+Vesper VA1200的TWS骨传导蓝牙耳机方案
炬力ATS2823/ATS2825蓝牙模块是专为无线音频应用设计的高性能解决方案,广泛应用于蓝牙音箱、耳机以及其他智能设备。这两款芯片支持蓝牙低功耗(Bluetooth Low Energy, BLE)和经典蓝牙(Bluetooth Classic),提供...
**AutoSAR与ATS在RTE中的验收测试** AutoSAR(AUTomotive Open System ARchitecture)是一种汽车行业广泛采用的软件架构标准,旨在提高软件的可重用性、可扩展性和可维护性。RTE(Runtime Environment)是AutoSAR...
ATS3019蓝牙音频解决方案数据表 ATS3019是一款低功耗蓝牙音频解决方案,专门为便携式和wireless音频应用设计。该芯片具有RISC32核心,支持蓝牙5.0版本,能够提供高质量的音频传输和语音识别功能。 一、ATS3019蓝牙...
ATS2829是炬力推出的一款蓝牙芯片产品,其资料中包含的原理图详细介绍了该芯片的设计、引脚功能以及应用场景等关键信息。在本文档中,我们将围绕炬力ATS2829蓝牙芯片的原理图,探讨其核心功能和设计细节。 首先,...
ATS2831蓝牙音频解决方案数据手册 ATS2831是一款低功耗的蓝牙音频解决方案,采用QFN40封装,适用于便携式和无线音频应用。该解决方案基于蓝牙V5.0规范,具有低功耗和高品质的音频传输能力。 蓝牙技术 ATS2831采用...
### MAC ATS测试软件说明手册知识点概述 #### 一、ATS软件简介 - **ATS(Accessory Test System)**:苹果公司为测试与验证第三方配件产品是否符合官方标准而开发的一款专用测试软件。 - **功能概述**:ATS软件主要...
**ATS-2 音频分析仪** ATS-2(Audio Precision Test System 2)是一款专为音频行业设计的高端音频分析仪,由AudioPrecision公司研发。这款设备在音频测试领域享有盛誉,广泛应用于音响设备制造、音频产品开发、质量...
手册中提到了ATS插件(Add-Ins)的使用,这可能指的是ATS-2软件支持的第三方插件或扩展模块,它们可以增强ATS-2的功能和测试能力。 ###安全和版权信息 文档中的安全信息章节强调了在使用ATS-2时需要遵守的安全准则...
根据给定的信息,我们可以深入探讨炬芯ATS2825蓝牙模块的相关知识点,包括其功能、应用领域以及技术规格等方面。 ### 炬芯ATS2825蓝牙模块概述 炬芯ATS2825蓝牙模块是一款由珠海炬芯科技股份有限公司(以下简称...
本文档详细介绍了如何安装和使用苹果ATS工具,涉及到的两种盒子是支持30-pin接口和Lightning接口的ATS测试盒子。 文档首先声明了版权信息,强调了文档内容的所有权属于苹果公司,并对文档的保密性、复制、传播和...
炬芯ATS2853是一款专为无线音频应用设计的高性能解决方案,主要应用于蓝牙音箱、车载音频系统以及Sound Bar等设备。该芯片采用QFN48封装,支持最新的蓝牙V5.0版本,以提供更高效、稳定的无线连接性能。 在蓝牙技术...
ATS2825是一颗高集成度的蓝牙音频解决方案Soc,是专为便携式和无线蓝牙音频所设计的产品,满足市场需求的高性能,低成本和低功耗等特点。大容量内置RAM能够满足不同蓝牙应用方案的需求,支持后台蓝牙,在播放外置SD...
### ISO/IEC14443 ATS(Answer to Select)详解 #### 一、概述 ISO/IEC14443标准是一项国际性的非接触式智能卡标准,广泛应用于交通卡、门禁卡等领域。其中,ATS(Answer to Select)作为一项重要的组成部分,在非...
### ATS48端子功能详解 #### 一、概述 ATS48是施耐德电气(Schneider Electric)推出的一款高性能自动转换开关,其在工业自动化领域应用广泛。本篇文章将围绕“ATS48端子图”这一主题展开,详细介绍ATS48端子的...