系统要求

最重要的事情是确定系统必须承受的最大网络负载。由于负载峰值可能是日均值的四倍,因此要特别注意负载峰值。如果不能确定,最好高估系统要求,因为让 Squid 在接近其处理能力限值的状态下工作可能会严重影响其服务质量。以下几节按重要程度依次阐述了各个系统要素。

硬盘

速度在缓存过程中起到重要作用,所以此要素值得特别关注。对于硬盘,此参数通过以毫秒衡量的随机搜索时间来描述。Squid 从硬盘读取或写入硬盘的数据块一般都较小,因此硬盘的搜索时间比其数据吞吐量更重要。如果要考虑代理的话,高转速硬盘可能会是更好的选择,因为高转速硬盘允许读写磁头更快定位到所需位置。使系统加速的一种可能办法是同时使用多个磁盘或采用分带 RAID 阵列。

磁盘缓存的大小

在小型缓存中,HIT(在其中找到所请求的对象)的概率会很小,因为该缓存很容易被占满,所以较少请求的对象很快被较新的请求对象替代。例如,如果缓存的可用空间为 1GB,而用户每天只浏览 10MB,那么占满缓存至少要 100 天。

确定所需缓存大小的最简便方法就是考虑连接的最大传送速度。1 Mbit/s(兆比特/秒)连接的最大传送速度为 125 KB/s。如果所有流量都进入缓存,1 小时累计可达 450 MB;假设所有流量都是在八小时工作时间之内产生的,那么每天将达到 3.6 GB。由于连接速度一般不会达到流量上限,所以可以认为缓存处理的数据总量约为 2 GB。这就是为什么要在 Squid 示例中使用 2 GB 的磁盘空间来保证一天的浏览数据都能缓存。

RAM

Squid 所需内存 (RAM) 大小直接与缓存中的对象数有关。Squid 还会在主储存器中储存缓存对象引用和经常请求的对象,以加速对这些数据的检索。随机储存器比硬盘快得多。

除此之外,Squid 还要在内存中保存其他数据,如:所有已处理 IP 地址的表、准确域名缓存、最常请求的对象、访问控制列表、缓冲区等等。

拥有足够的内存对于 Squid 进程非常重要,因为如果必须交换到磁盘的话,系统性能会显著降低。可以使用 cachemgr.cgi 工具来管理缓存内存。该工具在第 30.6 节 “cachemgr.cgi”中有介绍。网络流量巨大的站点应使用内存在 4GB 以上的 AMD64 或 Intel 64 系统。

CPU

Squid 并不是需要大量使用 CPU 的程序。处理器的负载只会在装载或检查缓存内容时才会增加。使用多处理器计算机并不会提高系统性能。要提高效率,最好是购买速度更快的硬盘或增加内存。