squidclient 测SQUID 缓存的命中率

原创
2016-06-07 15:04:25 1276浏览

squidclient这个东东很好用 清理squid 缓存 查看squid状态等等功能,都挺方便的 基本的使用方法 *取得squid运行状态信息: squidclient -p 80 mgr:info *取得squid内存使用情况: squidclient -p 80 mgr:mem *取得squid已经 缓存 的列表: squidclient -p 80



squidclient这个东东很好用 清理squid缓存 查看squid状态等等功能,都挺方便的

基本的使用方法
*取得squid运行状态信息: squidclient -p 80 mgr:info
*取得squid内存使用情况: squidclient -p 80 mgr:mem
*取得squid已经缓存的列表: squidclient -p 80 mgr:objects. use it carefully,it may crash
*取得squid的磁盘使用情况: squidclient -p 80 mgr:diskd
*强制更新某个url:squidclient -p 80 -m PURGE http://www.php-oa.com/static.php
*更多的请查看:squidclient -h 或者 squidclient -p 80 mgr:

* 如何得知 squid 执行中的状态?

最简单的方式便是透过浏览器来观察。squid 本身提供一只 cgi 程式,档名为cachemgr.cgi,squid 安装完后将它复制到 Apache 下的 cgi-bin 这个目录下即可使用。

要察看Cache Manager提供的资讯时,请在浏览器的位址列中键入

http://伺服器的名称或IP位址/cgi-bin/cachemgr.cgi

当然,我更加喜欢使用下面的方法

squidclient -t 1 -h localhost -p 80 mgr:inf 这样也行

下面是一些基本内容

Squid Object Cache: Version 2.6 //Squid的版本

HTTP/1.0 200 OK
Date: Tue, 11 Mar 2008 16:08:14 GMT
Content-Type: text/plain
Expires: Tue, 11 Mar 2008 16:08:14 GMT
Last-Modified: Tue, 11 Mar 2008 16:08:14 GMT
Connection: close

Squid Object Cache: Version 2.6.STABLE6
Start Time: Tue, 11 Mar 2008 10:21:47 GMT
Current Time: Tue, 11 Mar 2008 16:08:14 GMT
Connection information for squid:
Number of clients accessing cache: 2023 使用proxy的电脑数量
Number of HTTP requests received: 81787 客户端http要求数量
Number of ICP messages received: 0 接受到的icp query数量
Number of ICP messages sent: 0 发出icp query数量
Number of queued ICP replies: 0
Request failure ratio: 0.00
Average HTTP requests per minute since start: 236.1 每分钟http request的数量
Average ICP messages per minute since start: 0.0
Select loop called: 24789642 times, 0.839 ms avg
Cache information for squid:
Request Hit Ratios: 5min: 99.6%, 60min: 98.7% Cache Request命中率
Byte Hit Ratios: 5min: 100.0%, 60min: 100.0% Cache Byte命中率
Request Memory Hit Ratios: 5min: 1.6%, 60min: 1.2%
Request Disk Hit Ratios: 5min: 82.0%, 60min: 90.5%
Storage Swap size: 7723212 KB 存放cache的磁碟使用量
Storage Mem size: 7992 KB 存放cache的记忆体使用量
Mean Object Size: 264.01 KB
Requests given to unlinkd: 279
Median Service Times (seconds) 5 min 60 min:
HTTP Requests (All): 2.94900 3.46762
Cache Misses: 0.03427 0.03427
Cache Hits: 5.06039 4.79440
Near Hits: 0.30459 0.35832
Not-Modified Replies: 0.00179 0.00179
DNS Lookups: 0.00000 0.00000
ICP Queries: 0.00000 0.00000
Resource usage for squid:
UP Time: 20787.011 seconds
CPU Time: 128.799 seconds
CPU Usage: 0.62%
CPU Usage, 5 minute avg: 0.44%
CPU Usage, 60 minute avg: 0.51%
Process Data Segment Size via sbrk(): 34292 KB
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
Memory usage for squid via mallinfo():
Total space in arena: 34424 KB
Ordinary blocks: 27031 KB 8599 blks
Small blocks: 0 KB 0 blks
Holding blocks: 6152 KB 2 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 7392 KB
Total in use: 33183 KB 82%
Total free: 7392 KB 18%
Total size: 40576 KB
Memory accounted for: 记忆体使用状态
Total accounted: 21777 KB
memPoolAlloc calls: 15446992
memPoolFree calls: 15337015
File descriptor usage for squid:
Maximum number of file descriptors: 16384 系统最大file descriptor数
Largest file desc currently in use: 1165 目前使用file descriptor最大值
Number of file desc currently in use: 571 目前正在使用的file descriptor数
Files queued for open: 0
Available number of file descriptors: 15813
Reserved number of file descriptors: 100
Store Disk files open: 266
IO loop method: epoll
Internal Data Structures:
29315 StoreEntries Cache中存放的快取档案数量
190 StoreEntries with MemObjects 记忆体斗的快取档案数量
176 Hot Object Cache Items 磁碟机中存放的快取档案数量
29253 on-disk objects

Proxy 回应的速度很慢时,可能是那里出问题?如何判定问题发生在那里?

网路回应慢有可能是目的网站的问题,也有可能是带宽不足的问题带宽需求是永远根不上使用者的脚步,故在网路出现变慢的问题时,请先以 ping 或 traceroute 指令测试网路的连线状态,如果封包回应很慢或封包遗失率很高,应该是属网路本身的问题,如果测试的结果良好,再继续看是否是 Proxy 出了问题。当然ping也不一定能说明问题














我的squid2.5, log中有大量的TCP_MISS/200记录;;
root# perl -lane '$type{$F[3]}++ if $F[1] > 2792;' -e 'END { print "$type{$_} $_" for keys %type }' /var/log/squid/access.log | sort -n
1 TCP_MEM_HIT/200
1 TCP_MISS/211
1 TCP_MISS/303
1 TCP_MISS/408
3 TCP_MISS/202
6 TCP_MISS/403
8 TCP_CLIENT_REFRESH_MISS/504
8 TCP_MISS/500
10 TCP_MISS/400
16 TCP_CLIENT_REFRESH_MISS/000
18 TCP_REFRESH_MISS/000
20 TCP_REFRESH_MISS/302
30 TCP_CLIENT_REFRESH_MISS/302
31 TCP_CLIENT_REFRESH_MISS/502
61 TCP_CLIENT_REFRESH_MISS/304
77 TCP_MISS/204
96 TCP_CLIENT_REFRESH_MISS/206
99 TCP_CLIENT_REFRESH_MISS/503
107 TCP_MISS/404
166 TCP_MISS/301
212 TCP_MISS/504
215 TCP_MISS/206
252 TCP_REFRESH_HIT/200
257 TCP_CLIENT_REFRESH_MISS/200
257 TCP_REFRESH_MISS/200
342 TCP_MISS/502
611 TCP_MISS/302
693 TCP_MISS/503
953 TCP_REFRESH_HIT/304
961 TCP_MISS/304
1302 TCP_MISS/000
21782 TCP_MISS/200
[root@oa squid]#

再看
应于HTTP请求,下列标签可能出现在access.log文件的第四个域。

TCP_HIT
Squid发现请求资源的貌似新鲜的拷贝,并将其立即发送到客户端。

TCP_MISS
Squid没有请求资源的cache拷贝。

TCP_REFERSH_HIT
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器返回304(未修改)响应,指示squid的拷贝仍旧是新鲜的。

TCP_REF_FAIL_HIT
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。然而,原始服务器响应失败,或者返回的响应Squid不能理解。在此情形下,squid发送现有cache拷贝(很可能是陈旧的)到宊?户端。

TCP_REFRESH_MISS
Squid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器响应新的内容,指示这个cache拷贝确实是陈旧的。

TCP_CLIENT_REFRESH_MISS
Squid发现了请求资源的拷贝,但客户端的请求包含了Cache-Control: no-cache指令。Squid转发客户端的请求到原始服务器,强迫cache确认。

TCP_IMS_HIT
客户端发送确认请求,Squid发现更近来的、貌似新鲜的请求资源的拷贝。Squid发送更新的内容到客户端,而不联系原始服务器。

TCP_SWAPFAIL_MISS
Squid发现请求资源的有效拷贝,但从磁盘装载它失败。这时squid发送请求到原始服务器,就如同这是个cache丢失一样。

TCP_NEGATIVE_HIT
在对原始服务器的请求导致HTTP错误时,Squid也会cache这个响应。在短时间内对这些资源的重复请求,导致了否命中。 negative_ttl指令控制这些错误被cache的时间数量。请注意这些错误只在内存cache,不会写往磁盘。下列HTTP状态码可能导致否定 cache(也遵循于其他约束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503, 504。

TCP_MEM_HIT
Squid在内存cache里发现请求资源的有效拷贝,并将其立即发送到客户端。注意这点并非精确的呈现了所有从内存服务的响应。例如,某些cache在内存里,但要求确认的响应,会以TCP_REFRESH_HIT, TCP_REFRESH_MISS等形式记录。

TCP_DENIED
因为http_access或http_reply_access规则,客户端的请求被拒绝了。注意被http_access拒绝的请求在第9域的值是NONE/-,然而被http_reply_access拒绝的请求,在相应地方有一个有效值。

TCP_OFFLINE_HIT
当offline_mode激活时,Squid对任何cache响应返回cache命中,而不用考虑它的新鲜程度。

TCP_REDIRECT
重定向程序告诉Squid产生一个HTTP重定向到新的URI(见11.1节)。正常的,Squid不会记录这些重定向。假如要这样做,必须在编译squid前,手工定义LOG_TCP_REDIRECTS预处理指令。

NONE
无分类的结果用于特定错误,例如无效主机名。


相应于ICP查询,下列标签可能出现在access.log文件的第四域。

UDP_HIT
Squid在cache里发现请求资源的貌似新鲜的拷贝。

UDP_MISS
Squid没有在cache里发现请求资源的貌似新鲜的拷贝。假如同一目标通过HTTP请求,就可能是个cache丢失。请对比UDP_MISS_NOFETCH。

UDP_MISS_NOFETCH
跟UDP_MISS类似,不同的是这里也指示了Squid不愿去处理相应的HTTP请求。假如使用了-Y命令行选项,Squid在启动并编译其内存索引时,会返回这个标签而不是UDP_MISS。

UDP_DENIED
因为icp_access规则,ICP查询被拒绝。假如超过95% 的到某客户端的ICP响应是UDP_DENIED,并且客户端数据库激活了(见附录A),Squid在1小时内,停止发送任何ICP响应到该客户端。若这点发生,你也可在cache.log里见到一个警告。

UDP_INVALID
Squid接受到无效查询(例如截断的消息、无效协议版本、URI里的空格等)。Squid发送UDP_INVALID响应到客户端







声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。