首页 > 对Squid使用的一些总结

对Squid使用的一些总结

对Squid使用的几点总结



1.cache_dir



在Linux环境下用aufs类型的cache_dir比较稳定,速度也比较快。cache_dir所在文件系统如果用noatime选项来mount,可以避



免访问cache文件时经常要更新access time的操作。



一般cache容量和被加速内容的比值在1:10到1:20比较合适。



cache_dir aufs /var/spool/squid 10240 64 64

这是一个典型网站web caching server的cache_dir配置,加速100GB到200GB的内容



cache_dir aufs /var/spool/squid 1024 16 64

这是一个典型办公室透明代理的cache_dir配置,加速10GB到20GB的内容





2.cache_mem



很多文章说cache_mem要设置成物理内存数量的一半,比如物理内存2GB的cache_mem要设置成1GB。但是经过实际使用检验,这往往



是造成服务器内存超负荷的元凶。《Squid: The Definitive Guide》关于cache_mem这样说:“This directive doesn‘t 



entirely control the size of the Squid process”。实际使用当中内存占用往往超过cache_mem限定值很多,也就是说,



squid占用内存量似乎不受这个参数的控制。所以,此参数不必设得太大,适量就行,我的设置是:



服务器:

cache_mem 100 MB



局域网:

cache_mem 10 MB



另外,设置较小的maximum_object_size_in_memory值有助于有效控制squid过度占用内存,例如:

maximum_object_size 12288 KB

maximum_object_size_in_memory 24 KB



memory_pools off,也是一个不错的设置



题外话,个人觉得squid这个软件设计的比较失败的地方就是内存管理这一块...





3.透明代理



防火墙设置好端口拦截,然后这样设置可以实现透明代理:



httpd_accel_port 80 (0: 加速任何端口)

httpd_accel_host virtual

httpd_accel_uses_host_header on

httpd_accel_with_proxy on





这是使两种工作模式:代理模式和加速模式,同时工作。要想关闭代理模式,只要把httpd_accel_with_proxy设成off





4.http_port



http_port可以重复设置,使得squid在多个端口侦听



http_port 80

http_port 3128

http_port localhost:8080





5.访问控制



acl it_nets src 192.168.0.0/19 (限制访问ip)

acl over_conn_limit maxconn 20 (限制连接数)

acl illegal_access url_regex -i what_ever_you_want (限制访问内容)



http_access deny over_conn_limit

http_access deny illegal_access

http_access allow it_nets

http_access deny all





6.cache文件的更新周期



refresh_pattern ^/$ 0 66% 240 reload-into-ims

refresh_pattern ^.+/(<^.>*)$ 0 66% 720 reload-into-ims

(首页,更新得比较频繁,cache更新周期短一些)



refresh_pattern -i /.(htm|html|txt|js)$ 0 66% 1440 reload-into-ims

(一般页面,更新得没那么频繁,cache更新周期长一些)



refresh_pattern -i /.(bmp|gif|jpg|png|swf)$ 0 66% 10080 reload-into-ims

(图片、flash,更新得最不频繁,cache更新周期最长)



refresh_pattern . 0 66% 10080 reload-into-ims

(缺省,长一些)





reload-into-ims



When set, this option makes Squid transform a request with a no-cache directive into a validation 



(If-Modified-Since) request. In other words, Squid adds an If-Modified-Since header to the request 



before forwarding it on. Note that this only works for objects that have a Last-Modified timestamp. 



The outbound request retains the no-cache directive, so that it reaches the origin server.



大概意思是:只在源服务器上文件变动的情况下才实际更新cache当中的内容。



小技巧:Ctrl+F5可以强制浏览器和squid刷新它的缓存。



题外话:内容管理系统(CMS)在更新发布页面的时候,应该与cache服务器之间有一种沟通机制,通知cache刷新更新了的内容





7.杂项



negative_ttl 0 minutes



pipeline_prefetch on (对提升squid处理客户端请求的速度有帮助)



forwarded_for on



dns_nameservers 202.96.128.86 202.96.128.166





8.Squid+Apache



在apache服务器中前置squid,可以有效减少apache衍生进程的数量,从而减少内存消耗。



利用Squid的访问控制功能,可以实现内容过滤、连接数限制等apache力所不能及的功能。



利用Squid的I/O驱动的请求处理模式,更高效地实现静态内容请求处理,至于动态内容还是交给apache来处理。



9.max_filedesc 16384



这个不用多说了...



10.待续..

更多相关:

  • 本文研究nginx提供的缓存功能,下面是实操记录。 这篇博文基于前面文章的基础上搭建,至始至终都是root用户操作 http://blog.csdn.net/tao_627/article/details/78953800 缓存清除功能需要借助第三方模块ngx_cache_purge,其链接如下 https://github...

  • 下面是参考文献[1]的翻译 简介 ATS既可以用作HTTP代理,也可以用作HTTP缓存,ATS能够缓存任何字节流,虽然它当前只支持HTTP协议传输的字节流,当这样的流缓存时,会带一个HTTP协议头部,会命名为缓存中的一个对象object。每个对象通过一个名为cache key的全局唯一值识别。 该文档的目的是描述ATS缓...

  • 策略模式作为行为型设计模式中的一种,主要封装相同功能的不同实现算法,用于在用户程序内部灵活切换。对用户来说能够快速替换对应的算法,能够让算法的实现独立于使用的用户。 基本的UML类图如下: 用户使用Stratey的实例能够快速得在不同的Cache算法之间灵活切换(直接使用对应的Cache实例来设置到Strategy之中即可。),...

  • 环境 ceph版本:12.2.1 部署模式:ec 2+1 osd: 3个 且资源池已经有数据 执行命令:ceph daemon osd.0 flush_store_cache 进行刷缓存。即将dump_mempools内存池管理的bluestore cache中的无用数据进行释放 主要参数: bluestore_cache_tr...

  • Intel官网上发出了最新版的Linux版本的集显驱动更新程序 但是,使用Ubuntu 14.04 64bit上的软件中心无法自动去更新该集显驱动更新程序,说是不安装未被确认安全的程序。下面是我采用的另一种解决方法,特记载如下。 注意这里一定要区分集显驱动更新程序和集显驱动更新,这是完全不同的两回事。前者是一种自动更新集显驱...

  •