几年前也维护过squid, N久不接触东西都忘光了。翻了之前的东西,记录如下:
cache object的过期与否取决于refresh_pattern参数,实在是太复杂,还是看官方手册比较好。
squid自己维护的cache存放系统有aufs/coss等,这个有不同的适用场景。比如aufs把文件存放在随机字符串为名字的文件夹上/datadir/000/000/0001(类似)上,当cache object是大量小文件的时候,每次都要open/fstat/read/close(系统调用)操作来寻找该目录下的cache。浪费cpu/io。而coss就解决了这个问题。关于它的介绍实在太复杂,个人没办法去理解,所以每次都要看手册了。
cache_dir coss /data/stripe xxxx ...overwrite =...
下面说下squidclient输出的信息
mgr:info
看hit ratios,5分钟,1小时,包括内存,disk命中的,当然mem命中更好。
mean object size,平均cache的文件大小,这个非常重要,关系到这2个参数设置,maximum_obj_size_in_mem 和max_obj_size,设置不当,大量的文件不会被cache导致回源,命中率非常低,cdn也失去了意义了。其中mean object size * storeEntries 结果可以了解到缓存目录使用情况。
cache_swap_low/high, cache占用内存比例超过多少会删除部分,然后低于的时候停止删除。
last failed connect at :xxx 对比下系统时间,可能源站的load和/网络有问题,导致回源失败。
mgr:mem 一项:
storeEntry 可以看到内存有多少cache object和每个object大小,这个可以知道内存占用情况。
mem_node ... 同上
memobject ...同上
若cache dir是1T,每个文件大小30k,大概放3600万
每个storeEntry ,外加md5 digit/index等,3600*130 ==4G内存。
快速删除cache,比如遇到非法图片,文章等
1. web端先删掉
2. squid 定期rotate log(放crontab),然后过滤出该时间段的url放txt, 假如知道图片是某个时间段内上传的,过滤该txt然后squidclient -p 80 -PURGE url
这样比传统的逐个搜cache_dir要快得多。
还有一个,要优化回源站的路由和网络,避免走公网或者跨ISP。
阅读(1101) | 评论(0) | 转发(0) |