access.log記錄格式如下
remotehost rfc931 authuser [date] “method URL” status bytes [Result Codes]:[Hierarchy Codes]
如:
221.222.213.64 - - [15/Nov/2006:00:00:03 +0800] “GET http://bbs.ci123.com/sample.jpg HTTP/1.1″ 200 240673 TCP_MEM_HIT:NONE
可以通過(guò)腳本查看一些統計信息,如各種反應狀態(tài)所占的比例,通常較好的情況下HIT所占的比例(應該就是所謂的命中率)可以在70%~80%
cat access.log|gawk ‘{print $11}’|sort|uniq -c|sort -nr
cat access.log|grep “http://blog”|gawk ‘{print $11}’|sort|uniq -c|sort -nr
154389 TCP_MEM_HIT:NONE
81330 TCP_IMS_HIT:NONE
66991 TCP_HIT:NONE
32413 TCP_MISS:FIRST_UP_PARENT
19900 TCP_NEGATIVE_HIT:NONE
1437 TCP_CLIENT_REFRESH_MISS:FIRST_UP_PARENT
1368 TCP_REFRESH_HIT:FIRST_UP_PARENT
245 TCP_MISS:ANY_PARENT
200 TCP_SWAPFAIL_MISS:FIRST_UP_PARENT
64 TCP_REFRESH_MISS:FIRST_UP_PARENT
23 TCP_IMS_HIT:FIRST_UP_PARENT
7 TCP_REFRESH_HIT:ANY_PARENT
7 TCP_CLIENT_REFRESH_MISS:ANY_PARENT
6 TCP_MISS:NONE
2 TCP_SWAPFAIL_MISS:ANY_PARENT
PS:官方文檔中關(guān)于Result Codes的說(shuō)明
============================================================
TCP_HIT
A valid copy of the requested object was in the cache.
TCP_MISS
The requested object was not in the cache.
TCP_REFRESH_HIT
The requested object was cached but STALE. The IMS query for the object resulted in “304 not modified”.
TCP_REF_FAIL_HIT
The requested object was cached but STALE. The IMS query failed and the stale object was delivered.
TCP_REFRESH_MISS
The requested object was cached but STALE. The IMS query returned the new content.
TCP_CLIENT_REFRESH_MISS
The client issued a “no-cache” pragma, or some analogous cache control command along with the request. Thus, the cache
has to refetch the object.
TCP_IMS_HIT
The client issued an IMS request for an object which was in the cache and fresh.
TCP_SWAPFAIL_MISS
The object was believed to be in the cache, but could not be accessed.
TCP_NEGATIVE_HIT
Request for a negatively cached object, e.g. “404 not found”, for which the cache believes to know that it is
inaccessible. Also refer to the explainations for negative_ttl in your squid.conf file.
TCP_MEM_HIT
A valid copy of the requested object was in the cache and it was in memory, thus avoiding disk accesses.
TCP_DENIED
Access was denied for this request.
TCP_OFFLINE_HIT
The requested object was retrieved from the cache during offline mode. The offline mode never validates any object, see
offline_mode in squid.conf file.
UDP_HIT
A valid copy of the requested object was in the cache.
UDP_MISS
The requested object is not in this cache.
UDP_DENIED
Access was denied for this request.
UDP_INVALID
An invalid request was received.
UDP_MISS_NOFETCH
During “-Y” startup, or during frequent failures, a cache in hit only mode will return either UDP_HIT or this code.
Neighbours will thus only fetch hits.
NONE
Seen with errors and cachemgr requests.
The following codes are no longer available in Squid-2:
ERR_*
Errors are now contained in the status code.
TCP_CLIENT_REFRESH
See: TCP_CLIENT_REFRESH_MISS.
TCP_SWAPFAIL
See: TCP_SWAPFAIL_MISS.
TCP_IMS_MISS
Deleted, TCP_IMS_HIT used instead.
UDP_HIT_OBJ
Hit objects are no longer available.
UDP_RELOADING
See: UDP_MISS_NOFETCH.
后面找到了中文版,補充全一些:
access.log結果編碼
相應于HTTP請求,下列標簽可能出現在access.log文件的第四個(gè)域。
TCP_HIT
Squid發(fā)現請求資源的貌似新鮮的拷貝,并將其立即發(fā)送到客戶(hù)端。
TCP_MISS
Squid沒(méi)有請求資源的cache拷貝。
TCP_REFRESH_HIT
Squid發(fā)現請求資源的貌似陳舊的拷貝,并發(fā)送確認請求到原始服務(wù)器。原始服務(wù)器返回304(未修改)響應,指示squid的拷貝仍舊是新鮮的。
TCP_REF_FAIL_HIT
Squid發(fā)現請求資源的貌似陳舊的拷貝,并發(fā)送確認請求到原始服務(wù)器。然而,原始服務(wù)器響應失敗,或者返回的響應Squid不能理解。在此情形下,squid發(fā)送現有cache拷貝(很可能是陳舊的)到客戶(hù)端。
TCP_REFRESH_MISS
Squid發(fā)現請求資源的貌似陳舊的拷貝,并發(fā)送確認請求到原始服務(wù)器。原始服務(wù)器響應新的內容,指示這個(gè)cache拷貝確實(shí)是陳舊的。
TCP_CLIENT_REFRESH_MISS
Squid發(fā)現了請求資源的拷貝,但客戶(hù)端的請求包含了Cache-Control: no-cache指令。Squid轉發(fā)客戶(hù)端的請求到原始服務(wù)器,強迫cache確認。
TCP_IMS_HIT
客戶(hù)端發(fā)送確認請求,Squid發(fā)現更近來(lái)的、貌似新鮮的請求資源的拷貝。Squid發(fā)送更新的內容到客戶(hù)端,而不聯(lián)系原始服務(wù)器。
TCP_SWAPFAIL_MISS
Squid發(fā)現請求資源的有效拷貝,但從磁盤(pán)裝載它失敗。這時(shí)squid發(fā)送請求到原始服務(wù)器,就如同這是個(gè)cache丟失一樣。
TCP_NEGATIVE_HIT
在對原始服務(wù)器的請求導致HTTP錯誤時(shí),Squid也會(huì )cache這個(gè)響應。在短時(shí)間內對這些資源的重復請求,導致了否命中。 negative_ttl指令控制這些錯誤被cache的時(shí)間數量。請注意這些錯誤只在內存cache,不會(huì )寫(xiě)往磁盤(pán)。下列HTTP狀態(tài)碼可能導致否定 cache(也遵循于其他約束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503, 504。
TCP_MEM_HIT
Squid在內存cache里發(fā)現請求資源的有效拷貝,并將其立即發(fā)送到客戶(hù)端。注意這點(diǎn)并非精確的呈現了所有從內存服務(wù)的響應。例如,某些cache在內存里,但要求確認的響應,會(huì )以TCP_REFRESH_HIT, TCP_REFRESH_MISS等形式記錄。
TCP_DENIED
因為http_access或http_reply_access規則,客戶(hù)端的請求被拒絕了。注意被http_access拒絕的請求在第9域的值是NONE/-,然而被http_reply_access拒絕的請求,在相應地方有一個(gè)有效值。
TCP_OFFLINE_HIT
當offline_mode激活時(shí),Squid對任何cache響應返回cache命中,而不用考慮它的新鮮程度。
TCP_REDIRECT
重定向程序告訴Squid產(chǎn)生一個(gè)HTTP重定向到新的URI(見(jiàn)11.1節)。正常的,Squid不會(huì )記錄這些重定向。假如要這樣做,必須在編譯squid前,手工定義LOG_TCP_REDIRECTS預處理指令。
NONE
無(wú)分類(lèi)的結果用于特定錯誤,例如無(wú)效主機名。
相應于ICP查詢(xún),下列標簽可能出現在access.log文件的第四域。
UDP_HIT
Squid在cache里發(fā)現請求資源的貌似新鮮的拷貝。
UDP_MISS
Squid沒(méi)有在cache里發(fā)現請求資源的貌似新鮮的拷貝。假如同一目標通過(guò)HTTP請求,就可能是個(gè)cache丟失。請對比UDP_MISS_NOFETCH。
UDP_MISS_NOFETCH
跟UDP_MISS類(lèi)似,不同的是這里也指示了Squid不愿去處理相應的HTTP請求。假如使用了-Y命令行選項,Squid在啟動(dòng)并編譯其內存索引時(shí),會(huì )返回這個(gè)標簽而不是UDP_MISS。
UDP_DENIED
因為icp_access規則,ICP查詢(xún)被拒絕。假如超過(guò)95%的到某客戶(hù)端的ICP響應是UDP_DENIED,并且客戶(hù)端數據庫激活了(見(jiàn)附錄A),Squid在1小時(shí)內,停止發(fā)送任何ICP響應到該客戶(hù)端。若這點(diǎn)發(fā)生,你也可在cache.log里見(jiàn)到一個(gè)警告。
UDP_INVALID
Squid接受到無(wú)效查詢(xún)(例如截斷的消息、無(wú)效協(xié)議版本、URI里的空格等)。Squid發(fā)送UDP_INVALID響應到客戶(hù)端。
Table 13-1列出了數字HTTP響應CODE和理由短句。注意Squid和其他HTTP客戶(hù)端僅僅關(guān)注這些數字值。理由短句是純解釋性的,不會(huì )影響響應的意義。對每個(gè)狀態(tài)碼,也提供了一個(gè)到RFC 2616的具體節的索引。注意狀態(tài)碼0和600是squid使用的非標準的值,不會(huì )在RFC里提到。
Table 13-1. HTTP response status codes
| Code | Reason phrase | RFC 2616 section |
| 0 | No Response Received (Squid-specific) | N/A |
| 1xx | Informational | 10.1 |
| 100 | Continue | 10.1.1 |
| 101 | Switching Protocols | 10.1.2 |
| 2xx | Successful | 10.2 |
| 200 | OK | 10.2.1 |
| 201 | Created | 10.2.2 |
| 202 | Accepted | 10.2.3 |
| 203 | Non-Authoritative Information | 10.2.4 |
| 204 | No Content | 10.2.5 |
| 205 | Reset Content | 10.2.6 |
| 206 | Partial Content | 10.2.7 |
| 3xx | Redirection | 10.3 |
| 300 | Multiple Choices | 10.3.1 |
| 301 | Moved Permanently | 10.3.2 |
| 302 | Found | 10.3.3 |
| 303 | See Other | 10.3.4 |
| 304 | Not Modified | 10.3.5 |
| 305 | Use Proxy | 10.3.6 |
| 306 | (Unused) | 10.3.7 |
| 307 | Temporary Redirect | 10.3.8 |
| 4xx | Client Error | 10.4 |
| 400 | Bad Request | 10.4.1 |
| 401 | Unauthorized | 10.4.2 |
| 402 | Payment Required | 10.4.3 |
| 403 | Forbidden | 10.4.4 |
| 404 | Not Found | 10.4.5 |
| 405 | Method Not Allowed | 10.4.6 |
| 406 | Not Acceptable | 10.4.7 |
| 407 | Proxy Authentication Required | 10.4.8 |
| 408 | Request Timeout | 10.4.9 |
| 409 | Conflict | 10.4.10 |
| 410 | Gone | 10.4.11 |
| 411 | Length Required | 10.4.12 |
| 412 | Precondition Failed | 10.4.13 |
| 413 | Request Entity Too Large | 10.4.14 |
| 414 | Request-URI Too Long | 10.4.15 |
| 415 | Unsupported Media Type | 10.4.16 |
| 416 | Requested Range Not Satisfiable | 10.4.17 |
| 417 | Expectation Failed | 10.4.18 |
| 5xx | Server Error | 10.5 |
| 500 | Internal Server Error | 10.5.1 |
| 501 | Not Implemented | 10.5.2 |
| 502 | Bad Gateway | 10.5.3 |
| 503 | Service Unavailable | 10.5.4 |
| 504 | Gateway Timeout | 10.5.5 |
| 505 | HTTP Version Not Supported | 10.5.6 |
| 6xx | Proxy Error | N/A |
| 600 | Unparseable Response Headers (Squid-specific) | N/A |
假如Squid從原始服務(wù)器沒(méi)有接受到任何響應,你可在access.log里看到狀態(tài)碼0。假如Squid接受到的響應沒(méi)有包含HTTP頭部,就會(huì )出現狀態(tài)碼600。在少數情況下,某些原始服務(wù)器僅發(fā)送響應body,而忽略了任何頭部。
下列編碼可能出現在access.log的第9域。請參考10.10節關(guān)于Squid如何對cache丟失情況,選擇有效的下一跳。
NONE
這指明Squid對本次請求,不會(huì )與任何其他服務(wù)器(鄰居或原始服務(wù)器)通信。它通常與cache命中、拒絕請求、cache管理請求、錯誤、和所有的ICP查詢(xún)這些類(lèi)型聯(lián)合出現。
DIRECT
Squid直接轉發(fā)請求到原始服務(wù)器。該域的第2半部分顯示原始服務(wù)器的IP地址,或主機名-假如禁止了log_ip_on_direct。
SIBLING_HIT
在姐妹cache返回ICP或HTCP命中后,Squid發(fā)送請求到姐妹cache。
PARENT_HIT
在父cache返回ICP或HTCP命中后,Squid發(fā)送請求到父cache。
DEFAULT_PARENT
Squid選擇該父cache,因為其在squid.conf的cache_peer行里被標志為default。
FIRST_UP_PARENT
Squid轉發(fā)請求到該父cache,因為它是位于已知活躍列表里的第一個(gè)父cache。
FIRST_PARENT_MISS
Squid轉發(fā)請求到該父cache,它第一個(gè)響應ICP/HTCP丟失消息。換句話(huà)說(shuō),對這個(gè)特殊的ICP/HTCP查詢(xún),在這個(gè)特殊時(shí)刻,被選中的父cache有最佳的往返時(shí)間(RTT)。注意標準RTT可能被人工矯正過(guò),取決于cache_peer指令的weight選項。
CLOSEST_PARENT_MISS
Squid選擇該父cache,因為它報告到原始服務(wù)器的RTT最低。這點(diǎn)僅在2個(gè)cache都激活了netdb,并且原始服務(wù)器(或在同一子網(wǎng)內的其他server)返回ICMP ping消息。
CLOSEST_PARENT
這點(diǎn)類(lèi)似CLOSEST_PARENT_MISS,除了RTT計算不是來(lái)自ICP/HTCP響應消息外。代替的,它們來(lái)自Squid保留的更老的計算方式,例如netdb交換功能。
CLOSEST_DIRECT
Squid基于netdb算法,轉發(fā)請求到原始服務(wù)器。這點(diǎn)在滿(mǎn)足下述任何條件時(shí)發(fā)生:
ROUNDROBIN_PARENT
Squid轉發(fā)請求到該父cache,因為設置了round-robin選項,并且它有最低的使用計數器。
CD_PARENT_HIT
Squid基于cache摘要算法(見(jiàn)10.7節)轉發(fā)請求到該父cache。
CD_SIBLING_HIT
Squid基于cache摘要算法轉發(fā)請求到該姐妹cache。
CARP
Squid選擇該父cache,基于cache數組路由協(xié)議算法(見(jiàn)10.9節)。
ANY_PARENT
作為最后的手段,Squid選擇該父cache,因為沒(méi)有其他方法能選擇可行的下一跳。
注意大部分上述編碼可能以TIMEOUT_開(kāi)頭,這表明在等待ICP/HTCP響應時(shí)發(fā)生超時(shí)。例如:
1066038165.382 345 193.233.46.21 TCP_MISS/200 2836 GET http://www.caida.org/home/../images/home.jpg TIMEOUT_CLOSEST_DIRECT/213.219.122.19 image/jpeg
可使用icp_query_timeout指令來(lái)調整超時(shí)。
事例:
cat access.log|gawk ‘{print $11}’|sort|uniq -c|sort -nr
15508 TCP_NEGATIVE_HIT:NONE 在對原始服務(wù)器的請求導致HTTP錯誤時(shí),Squid也會(huì )cache這個(gè)響應。在短時(shí)間內對這些資源的重復請求,導致了否命中。
8212 TCP_IMS_HIT:NONE 客戶(hù)端發(fā)送確認請求,Squid發(fā)現更近來(lái)的、貌似新鮮的請求資源的拷貝。Squid發(fā)送更新的內容到客戶(hù)端,而不聯(lián)系原始服務(wù)器。(這指明Squid對本次請求,不會(huì )與任何其他服務(wù)器(鄰居或原始服務(wù)器)通信。)
3771 TCP_HIT:NONE Squid發(fā)現請求資源的貌似新鮮的拷貝,并將其立即發(fā)送到客戶(hù)端。
3468 TCP_MISS:DIRECT Squid沒(méi)有請求資源的cache拷貝。(Squid直接轉發(fā)請求到原始服務(wù)器)
2379 TCP_MEM_HIT:NONE 從內存的響應
1876 TCP_DENIED:NONE 因為http_access或http_reply_access規則,客戶(hù)端的請求被拒絕了 全是錯誤地址鏈接
1732 TCP_REFRESH_HIT:DIRECT Squid發(fā)現請求資源的貌似陳舊的拷貝,并發(fā)送確認請求到原始服務(wù)器。原始服務(wù)器返回304(未修改)響應,指示squid的拷貝仍舊是新鮮的。(Squid直接轉發(fā)請求到原始服務(wù)器)
708 TCP_CLIENT_REFRESH_MISS:DIRECT Squid發(fā)現了請求資源的拷貝,但客戶(hù)端的請求包含了Cache-Control: no-cache指令。Squid轉發(fā)客戶(hù)端的請求到原始服務(wù)器,強迫cache確認。 (Squid直接轉發(fā)請求到原始服務(wù)器)
7 TCP_MISS:NONE Squid沒(méi)有請求資源的cache拷貝。(這指明Squid對本次請求,不會(huì )與任何其他服務(wù)器(鄰居或原始服務(wù)器)通信)
聯(lián)系客服