[CDN 技术] Squid优化
转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]
本文链接: http://www.php-oa.com/2008/02/03/squidyouhua.html
Squid优化(一)
Hot!几个SQUID重要参数:
maximum_object_size 是 能cache最大的文件大小.对应wmv,rm文件,建议设置为32768 kB
maximum_object_size_in_memory 是在内存中cache的最大文件大小.
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.
Squid优化(2)
Hot!探讨动态内容的CACHE.
BBS,论坛是典型动态内容,要保证内容更新及时的同时,提高访问速度,降低数据库负担不是个简单任务.经实践发现如下办法取得很好效果:
1) 配置SQUID,对动态内容强制CACHE,用到的配置参数是refresh_pattern
refresh_pattern ^/forum/viewthread.php 1440 1000% 1440 ignore-reload
/forum/viewthread.php的内容将强制保持1天
2) 修改论坛程序在用户回复帖子后,向SQUID发送PURGE命令清除相应帖子的页面CACHE,保证失效性
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~实现过这一功能,但是有时候生效,有时候无效,还未进一步查明原因.(Edit by Sean)
3) 有些频繁更新的页面可以不CACHE,用no_cache参数
acl no_forum_cache urlpath_regex ^/forum/forumdisplay.php
no_cache DENY no_forum_cache



















让我来告诉你为什么修改论坛程序在用户回复帖子后,向SQUID发送PURGE命令清除相应帖子的页面CACHE,保证失效性
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~实现过这一功能,但是有时候生效,有时候无效,还未进一步查明原因.(Edit by Sean)
参见refresh_pattern的参数说明(http://www.squid-cache.org/Versions/v2/2.6/cfgman/refresh_pattern.html)就可以知道,因为refresh_pattern ^/forum/viewthread.php 1440 1000% 1440 ignore-reload中的ignore-reload违背了HTTP协议标准,squid根据此参数将会对viewthread.php ignores a client no-cache or reload header.于是purge也就不怎么灵光了。故还是在viewthread.php内部控制cache-control头比较稳妥。
refresh_pattern参数是针对那些无法控制cache-Control的静态资源的一般设置,对动态页还是直接控制max-age和public private吧
SQUID发送PURGE命令清除无效一般是gzip问题,假如整个系统无压缩,PURGE都会成功
多谢高人指点,哈哈,我这边到是早知道这个问题了,都已经修改squid修复了这个问题
哎呀
4G内存的服务器用2G
那8G,12G呢?