squid优化建议

squid优化建议(转贴) 作者:听松一隅

SQUID是个很不错CACHE服务器,各大门户网站都在用。过去二天也做了些SQUID优化,把经验贴上来。

几个重要参数:

* maximum_object_size 是能cache最大的文件大小。对应wmv,rm文件,建议设置为32768 kB
* maximum_object_size_in_memory 是在内存中cache的最大文件大小。一般为128的倍数.
* cache_mem 是SQUID可用到的最大内存。经实践,4G内存的服务器用2G;超过2G导致SQUID运行不稳

首先要分析SQUID所cache内容:

运行 squidclient -p 80 cache_object://localhost/info 能看到如下内容:

Storage Swap size: 7549104 KB
Storage Mem size: 418804 KB
Mean Object Size: 160.46 KB

Mean Object Size是平均内容大小,一般要把maximum_object_size_in_memory设置成离它最近的128的倍数。在这个例子中maximum_object_size_in_memory 的值应该是256kB。

cache_mem 一般设置成服务器内存的一半或更多,只要运行过程中LINUX没有使用SWAP就可以。

再就是按业务分SQUID:
比如某个论坛,用户能上载图片和视频;当然我们要把上载的图片、视频放在单独的域名上,比如img.example.com, video.example.com;这两个域名只提供静态文件服务。

根据统计,图片的平均大小在100KB,视频的平均大小在4M,差别是很大,应该建两个squid分别作图片和视频的CACHE。图片SQUID的 maximum_object_size_in_memory 设置为256KB,视频的SQUID的maximum_object_size_in_memory设置为8196KB。

实际应用中,原来把图片和视频混在一起的CACHE HIT RATE只有60%,CPU占用率经常在50%以上。分开后图片的CACHE HIT RATE达到95%,CPU占用率降到15%;视频的CACHE HIT RATE到80%了,取得了很好的效果

附上非常有用的squid命令:
list of useful squidclient commands

* get squid run time info: squidclient -p 80 mgr:info
* update specific url squid cache: squidclient -p 80 -m PURGE http://www.linux.com.cn/
squidclient -p 80 http://www.linux.com.cn/
* get squid memory detail info: squidclient -p 80 mgr:mem
* get squid cached objects list: squidclient -p 80 mgrbjects. use it carefully, it may crash you squid
* get squid diskd stats: squidclient -p 80 mgr:diskd