Squid 配置管理指南 1
一. Web Cache技术简介
WWW技术是当今Internet上发展最快,使用最广泛的技术;
WWW应用也早已取代E-mail成为Internet上数据流量最大的应用。Internet
的飞速发展,对网络的带宽建设提出更高要求。如何在现有带宽的条件下,更有效的使用WWW资源,是Internet世界关注的焦点之一。在此种迫切需求 下,Web
Cache技术应运而生。
Web
Cache的作用和个人电脑上网页浏览器所带的缓存一样,主要是对网络信息进行缓存。当用户第一次向一个网页发出访问请求,网页从远端服务器传送给用户 时,该网页内容被存在缓存服务器中。第二个用户在对同一个网页发出访问请求时,就可以直接从缓存服务器中得到网页,而不必连接到远端服务器。这样对那些访 问频繁的网页,访问速度会大大提高。而这一切对用户都是透明的。
Cache
Hit:当用户发起请求时,Cache服务器首先会在快取缓冲区内寻找该数据。如果欲查询的数据恰好已存在于缓冲区内(这样的情况我们称之为cache
hit ),就直接从内存读出数据。
Cache
Miss:当用户发起请求时,Cache服务器首先会在快取缓冲区内寻找该数据。如果欲查询的数据恰好已存在于缓冲区内(这样的情况我们称之为cache
Miss ),那么Cache服务器需要到远端服
务器进行请求,然后重新进行缓存。
Uncachable:不允许Cache服务器对该数据进行缓存。
Cache Validation:保证Cache服务器不提供给用户过期信息的一种机制。
二. Squid安装时硬件需求
相对于其它系统而言,Web Cache系统更依赖于硬件资源。虽然Web
Cache系统的高性能关键来自整个软硬件系统的高性能,但下列因素对Web
Cache系统性能的影响非常明显,按照重要性按由高到低排列为:
磁盘随机访问时间
系统内存的容量
磁盘的持续吞吐量
CPU能力
上述任何一个要素的不足,都将明显影响缓存系统性能。为了保证系统能够稳定高效的运行,系统冗余是必不可少的。以便于在出现硬件故障情况下,有预先准备的 替换部件。如果你的Web
Cache服务器非常重要,应该有一个(正在运行的)安装了操作系统和squid的冗余机器,以便于可以进行瞬时切换。下面我们来详细描述如何确定Web
Cache服务器所需要的硬件资源:
硬盘
Web
Cache服务器需要使用一个随机访问速度快且高吞吐量的硬盘。但是如果我们设定很少的Web缓存数据,那么它即使是世上最快的硬盘也没什么用处。为了提 高缓存的效率,硬盘需要保存大量的下载数据。在硬盘的选择上,硬盘的查找时间(Seek
time)是一个很关键的性能参数。我们可以在硬盘的说明文档中查看该参数定义。这个数值越小越好:它是磁头从一个随机磁道移到另一个磁道的平均时间(以 毫秒为单位)。
只有一个硬盘的缓存处理一次请求至少访问一次硬盘(忽略硬盘的RAM缓冲和结点更新次数). 如果只有一个硬盘,
我们可以通过下面的公式来计算一秒内硬盘查找次数(由此而得一秒内的请求数):
每秒请求数 = 1000/查找时间
当我们在Web Cache服务器中使用多个硬盘时,那么操作系统会在不同的硬盘间交叉写盘,因此如果你在Web
Cache服务器中使用多个硬盘,那么每个硬盘的每秒查找次数会低一些。
几乎所有的操作系统,当增加硬盘后,随机查找时间呈半线性方式增加. 如果你在等式中增加磁盘的数量,每秒请求数会更接近!
同时为了简化,我们假定你用的硬盘都有相同的查找时间,从而公式变为:
每秒请求数的理论值 = 1000/(查找时间)/(硬盘数)
如果我们有3个硬盘 - 它们的查找时间都是12ms.,因而理论上的请求处理速度,
每秒请求次数 = 1000/(12/3) = 1000/4 = 250 次/秒
另外由于目前IDE技术的发展使得IDE硬盘的查找时间与SCSI硬盘的非常接近,所以(带有DMA兼容的IDE控制器)数据传输速度不会降低整个机器的 运行速度。在确定了使用的硬盘类型之后,我们需要确定为Web
Cache服务器分配多大的硬盘空间。当决定分配给缓存的硬盘空间数量时,应该确定每天经过缓存的数据的大概容量。如果你不能确定这个数值,那么你可以使 用平均传输速度为基础来计算该数值。一个
10Mb/s 的线缆每秒大约传输1,250,000字节. 如果所有客户端都来访问这个缓存,
硬盘将以每秒1250k的速度被使用,如果全速运转一天(24小时),你大约传输了36 G字节. 那么我们则要分配给Web
Cache服务器一个36G的空间。
使用RAID系统来建造缓存系统.
这可以显著地增加数据的可用性,但一个RAID-5系统严重地降低硬盘的吞吐量。如果你非常关心系统的正常运行时间,选择一个RAID系统确实不错.
但是,由于缓存中存储的数据并不重要,你可手工清除这些数据,重新格式化或替换磁盘。
RAM 需求
Squid在内存中维护着一个对象对列。由于Squid需要检查一个对象是否已经缓存,所以这个表的快速查找非常重要。当由于系统内存不足,这个表的一部 分被放在交换分区中时,squid的性能就会显著下降。这时因为squid是一个很大的进程,所以对它做进程切换将严重影响其性能。并且由于操作系统在切 换进程时,squid会被放入'睡眠任务'队列中,
它将暂时不能处理已经建立的请求连接。
每一个硬盘上的Cache对象,其索引项大约占用75个字节的内存。据统计Web
Service中每个对象的平均大小约为3K, 因此如果你有一个1G的硬盘空间,你可以存放大约350000个Web
Service对象。而一个Web Service对象需要占用75字节RAM, 80
000对象大约需要30M内存。如果你有8G硬盘空间,则需要250M内存来建立对象索引。但是这些内存需求并不包括操作系统、Squid进程以及系统其 他使用的内存,明白这一点很重要。
硬盘持续吞吐量
Squid倾向于取小的数据块,所以吞吐量的重要性不比随机访问时间。通常,能快速查找的硬盘一般具备很大的吞吐量,而硬盘越多(在现在,即使是IDE硬 盘)
能传输越多的数据,从而超过客户端所能从缓存下载数据的速度。
CPU 能力
一般说来,Squid不是一个多CPU敏感程序,在启动时,Squid会使用大量的CPU资源来查找缓存里有哪些内容,一个低速的CPU会降低Squid 刚启动后几分钟内的缓存访问速度。一个多处理器的机器通常不会明显地增加访问速度:
虽然一部分Squid代码可以跑多线程,但是这个代码片段也不是CPU密集的。
由上面的分析可以了解更多的内存或更多的硬盘会更大幅度的提升Squid的性能。
三. Squid安装前的系统优化。
Squid的系统优化包括Squid运行操作系统的选择和操作系统性能参数的调整两个部分:
选择操作系统
Squid支持大部分的类Unix操作系统,这些操作系统列表可以在Squid的官方网站上看到。不过据Squid的作者推荐,一般采用FreeBSD和 Linux系统。
系统性能参数调整
1. FD调整
Linux:
a) 打开/usr/include/bits/typesize.h ,修改#define
__FD_SETSIZE为你想要的数值。
b) echo 8192 > /proc/sys/fs/file-max
c) Ulimit –Hn 8192
d)
然后再开始编译Squid。(这些参数都是暂时生效的,机器重新启动后,这些参数会丢失,你需要把这些写在squid的启动脚本中。
FreeBSD:
a) 修改Kernel的文件,将Maxfile改为”options MAXFILES=8192”
b) 重新编译内核,使用新的内核启动。
2. 本地端口调整
Linux:
a) echo "minport maxport" >
/proc/sys/net/ipv4/ip_local_port_range
b) 这个值同样是暂时生效的,机器重新启动后,这些参数会丢失,所以也需要将这些参数写入Squid的启动脚本里面。
- 最新评论