29.2. 系统要求

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

29.2.1. 硬盘

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

29.2.2. 磁盘超速缓存的大小

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

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

29.2.3. RAM

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

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

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

29.2.4. CPU

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