yayu_myself
发表于 2011-11-18 11:16
回复 130# aaaaaa
嗯,O(∩_∩)O谢谢!
prefetch的配置文件在源码目录找到了,但是它没有被安装到etc中。。
yunfeichen119
发表于 2011-11-18 11:23
prefetch配置中的prefetch_children是做什么的
aaaaaa
发表于 2011-11-18 11:55
只有这个参数定义的ip地址发起的请求,才会启用prefetch
yunfeichen119
发表于 2011-11-18 12:49
回复 133# aaaaaa
我表述的不是很明白。配置文件说指明Traffic Server child node,这个child node是客户端,集群中其他的traffic server,还是源服务器?
如果是集群中traffic server,这里的预取和通常的预取好像不同呀?
aaaaaa
发表于 2011-11-18 13:50
这个child node是客户端,因为这个功能是有级联背景的,因此你也可以看作子cache服务器。
yunfeichen119
发表于 2011-11-19 10:51
本帖最后由 yunfeichen119 于 2011-11-19 11:01 编辑
prefetch配置中proxy.config.prefetch.child_port指定的是客户端端口吗?用户使用浏览器查看网页时,还要做特殊配置吗?如果用户没有启动这个端口,就不可以进行预取吗?还是proxy.config.prefetch.child_port是其他含义?
难道prefetch功能只能在集群中与其他traffic server配合使用?
如果只使用一台trafficserver,采用这种布局:客户端----traffic server-------源服务器,可以使用预取功能吗?
非常感谢!
aaaaaa
发表于 2011-11-19 12:57
prefetch配置中proxy.config.prefetch.child_port指定的是客户端端口吗?用户使用浏览器查看网页时,还要做特殊配置吗?如果用户没有启动这个端口,就不可以进行预取吗?还是proxy.config.prefetch.child_port是其他含义?
child_port是TS用来发起http请求的端口。TS实现update和prefetch都是自己内部启用一个仿真客户端,用127.0.0.1发起一个客户端请求,来推动状态机进行更新和抓取操作。所以有所谓的端口就是这个仿真客户端的发起端口。这个端口默认是:39679
难道prefetch功能只能在集群中与其他traffic server配合使用?
如果只使用一台trafficserver,采用这种布局:客户端----traffic server-------源服务器,可以使用预取功能吗?
可以用,同上描述,因为TS会仿真客户端,所以只要有个触发机制就够了。prefetch是用的真正客户端来触发。update是用的时间来触发。
非常感谢!
yunfeichen119
发表于 2011-11-19 15:51
本帖最后由 yunfeichen119 于 2011-11-21 10:29 编辑
回复 137# aaaaaa
我使用火狐浏览器,设置另一台机器的traffic server为代理,访问门户 网站,测试prefetch。我用wireshark在本机抓包,抓到了traffic server发往本机39679端口TCP SYN报文,因为本机没有启动39679端口,三次握手失败。这是怎么回事?
是不是proxy.config.prefetch.push_cached_objects造成的影响?
如果使用级联方式,traffic server应该启动39679进行监听接收报文,使用netstat命令并没有查到39679端口呀。
client-----TS1------------TS2-----------------WEB SERVER
client向TS1发起请求,TS1解析应答中的html文档后进行预取,TS1向TS2发起请求,TS2从WEB SERVER处得到应答后,传给TS1,TS1将应答缓存完成prefetch,在client请求时将预取的资源返回给client。
client-------TS--------WEB SERVER
TS在预取后应将资源缓存,不应该直接发送给client呀??
是我配置有问题吗?配置应该只是使能了prefetch,prefetch_children指明为客户端。
3.0.1版本的prefetch功能可以使用吗?
很是困惑呀
prefetch模块发起了两次连接,第一次向127.0.0.1:8080建立连接,应该是你说的。第二次向客户端:childport发起连接,应该是推送数据。推送的数据应该由stuffer模块接收吧?如果是级联,推送给child node,如果不是级联,应该推送给自己的stuffer模块。不知道我的理解对不对??
aaaaaa
发表于 2011-11-21 18:53
client-------TS--------WEB SERVER
是工作的,所有从prefetch发起的请求,都会缓存(遵守缓存规则)
我在完成prefetch配置文件的任务时,用的trunk,确实可以用。其他3.0.x不记得了。
prefetch目前有个极大的限制,不能解析非html/txt的文件,即gzip的文件无法处理,你测试关闭gzip看看。
gzip的核心处理,community一直有想法把它建立在应用层,但是由于核心开发人员一直忙其他任务,一直没有人来做。悲剧。
你三次握手失败,搞不清楚状况啊
client-----TS1------------TS2-----------------WEB SERVER
client向TS1发起请求,TS1解析应答中的html文档后进行预取,TS1向TS2发起请求,TS2从WEB SERVER处得到应答后,传给TS1,TS1将应答缓存完成prefetch,在client请求时将预取的资源返回给client。
这个prefetch应该起在TS1上,事实上是TS1从TS1的localhost:39679->localhost(或其外网IP):8080(或其他配置端口)来发起一个http请求。请照这个方向来查问题。
最近忙于一些复杂问题,等我有空再总结些文档吧。
yunfeichen119
发表于 2011-11-22 09:46
本帖最后由 yunfeichen119 于 2011-11-22 14:46 编辑
client-------TS--------WEB SERVER
是工作的,所有从prefetch发起的请求,都会缓存(遵守缓存规则)
我 ...
aaaaaa 发表于 2011-11-21 18:53 http://bbs.chinaunix.net/images/common/back.gif
谢谢你的答复。