日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

CentOS 6.3 64bit上测试ATS 5.3.0中的正则刷新插件regex_revalidate

發布時間:2023/11/27 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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編譯出動態庫,并安裝到動態庫安裝目錄中去就可以,這里不再闡述。這里主要談如何使用該插件實現目錄文件的正則刷新。

一、如何配置?
以刷新鳳凰網某個域名下面的資源為例,在plugin.config中添加一行
regex_revalidate.so -c rr.config -l regex_revalidate.log
將配置規則rr.config放入配置文件目錄/opt/ats/etc/trafficserver下面(假設ats安裝prefix為/opt/ats),其內容如下:
http://y2.ifengimg.com/ ? 1432650630
該配置文件中每行表示一個正則刷新的目錄,后面是過期的時間戳。從當前時間到過期時間這段時間內,正則匹配上上面某行配置的url將不會緩存,而是直接回源驗證再發送回源響應。
過期時間戳的計算采用下面的方法,在命令行輸入
date -d "20150526 22:30:30" +%s


得到設定的時間戳。這里暫且設置過期時間是當前時間的一天之后的時間戳就可以了,根據業務需求,你也可以適當修改。
如果超過過期時間戳,相應的配置行將從內存中刪除,該行配置也會失效。必要時請及時刷新配置文件。

-l選項給出了日志文件名,它默認會存放在/opt/ats/var/log/trafficserver/regex_revalidate.log中,因為它調用的日志文件接口是TSTextLogObjectCreate(),和其它插件是一樣的。

二、如何開啟插件日志?
在plugin.config中配置時指定-l參數就可以,寫日志的地方只有在list_config中的TSTextLogObjectWrite(),其他地方都是使用的TSDebug函數,要查找這部分的日志是在records.config中的配置。
CONFIG proxy.config.diags.debug.enabled INT 1
CONFIG proxy.config.diags.debug.tags STRING regex_revalidate.*
然后就在traffic.out中看到打印日志信息了。



三、測試方法:
使用wget來進行ATS本機測試
直接回源
wget -SO /dev/null "http://y2.ifengimg.com/xingzhao/JS/otherCouplet.js"
wget -SO /dev/null "http://y2.ifengimg.com/mappa/2015/05/06/e8a0212acf42d11e33338373b83b92e0.swf"


使用代理刷新
wget -SO /dev/null -e 'http_proxy=127.0.0.1:8081' "http://y2.ifengimg.com/xingzhao/JS/otherCouplet.js"
wget -SO /dev/null -e 'http_proxy=127.0.0.1:8081' "http://y2.ifengimg.com/mappa/2015/05/06/e8a0212acf42d11e33338373b83b92e0.swf"
對上面的url反復執行多次,我們只能得到緩存的狀態是[cMsSfW]或是[cMsSf ],也就是響應并不會緩存,它只會在指定的過期時間內每次都回源。


作為對比,我們測試下面的url
wget -SO /dev/null -e 'http_proxy=127.0.0.1:8081' "http://y1.ifengimg.com/auto/image/2015/0416/023115190.jpg"
我們發現它并不受影響,響應會緩存,緩存的狀態從[cMsSfW]=>[cHs f ]=>[cRs f ]


同時查看插件日志:



查看訪問日志access.log中發現同一個請求并不會緩存,都會每次回源請求,這是我們需要的結果


但是不在正則刷新范圍的url卻可以正常緩存

四、測試中出現的問題

使用wget測試時,我發現ATS會發生段錯誤并重啟,traffic_crashlog給出的部分崩潰日志如下:

FATAL: HttpTransact.cc:391: failed assert `s->pending_work == NULL`


這個bug已經得到ATS官方修復,參見JIRA

https://issues.apache.org/jira/browse/TS-3455

五、Patch之后繼續測試

考慮到ats 6.1.1目前還是不穩定,我決定仍然在ats 5.3.2上做path,主要是修改3個地方,都在proxy/http/HttpTransact.cc中,截圖如下:



手動修改后,直接安裝,繼續使用上面的url測試,發現首次刷新后,會緩存新數據,以后直接命中。由于我這里舉例的源站文件內容沒有改變,每次會返回206,但是正常情況下會返回200



從traffic.out中可以看到

Forced revalidate - http://y2.ifengimg.com/xingzhao/JS/otherCouplet.js

以自己可以修改的網站測試為例,我們發現對緩存的內存執行強制刷新的行為是這樣的,對正則匹配上的資源,在緩存中HIT_FRESH的情況下,并且其Date時間戳在規則添加時間戳之前,執行強制刷新,向源站發送304查詢,如果源站內容沒有變,還是返回舊的緩存內容,否則,返回更新后的內容,但是ats的緩存響應狀態碼仍然是[cSsSfU],不同的是文件內容有變化。

下面是刷新前后效果對比圖,刷新只會執行一次,以后都從緩存讀。即使匹配上,對刷新規則之后緩存的內容沒有作用,對未緩存的規則也沒有作用。



注意文件長度的變化。

備注:本文得到參考文獻的啟發,特別感謝4399運維軍團等的無私分享。

參考文獻
[1].http://ju.outofmemory.cn/entry/89153
[2].http://qingchunranzhi.blog.163.com/blog/static/23728612020153174434608

總結

以上是生活随笔為你收集整理的CentOS 6.3 64bit上测试ATS 5.3.0中的正则刷新插件regex_revalidate的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。