[CDN 技术] Squid优化

Feb 3rd, 2008

转载本站文章请注明,转载自:扶凯[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

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
  1. 我国著名历史学家
    Mar 4th, 2008 at 05:08
    Reply | Quote | #1

    让我来告诉你为什么修改论坛程序在用户回复帖子后,向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吧

  2. Squid Cache 服务器安装搭建
    Apr 12th, 2009 at 18:12
    #2
  3. ayou
    Dec 10th, 2009 at 07:31
    Reply | Quote | #4

    SQUID发送PURGE命令清除无效一般是gzip问题,假如整个系统无压缩,PURGE都会成功

  4. admin
    Dec 11th, 2009 at 03:49
    Reply | Quote | #5

    多谢高人指点,哈哈,我这边到是早知道这个问题了,都已经修改squid修复了这个问题

  5. wss8848
    May 4th, 2011 at 07:16
    Reply | Quote | #7

    哎呀
    4G内存的服务器用2G
    那8G,12G呢?

  6. web资料整理 | LinGene's Blog
    Jan 7th, 2012 at 10:03
    #9