- 硬碟要快
对於要当 Proxy Server 的硬碟,应该是着重在 Seek Time 和 Latency 的重点上,这比容量更为重要。Seek
Time 是指在硬碟中找特定档案位置的平均时间,而Latency是指延迟时间, 硬碟机转速越高越小。
选择的准则:Seek Time 越小越好,这样搜寻档案内容会变快;Latency 也是越小越好,代表转速要快。Cache 的最大负载量受到
Seek Time 影响,而硬碟传输速率主要影响资料写 入的速度。
硬碟容量够用即可,不要因为要争取大容量,而牺牲上列所说的两者,针对提升效能来看 ,Seek Time 与 Latency 比较重要。在选择时,把握一个原则,就是使用多颗小容量硬碟比一个高容量好,这样可以降低
Seek Time,搜寻比较快速。小容量硬碟必须有很多才能组合成大容量 Cache 空间,比较合适的规格是 SCSI,因为
SCSI 在多颗时表现比 IDE 好。
另外可以藉由流量估计需要多大容量,来扩充本身的机器的等级。
当 IDE 对上 SCSI
SCSI 目前在两者之间还是属较有选择自由且较快的系统汇流排。Ultra2Wide-SCSI 是日前常见的规格,允许在同一
SCSI 线上串接至多到十五个磁碟机,并拥有 80 MByte/s 的频宽。一些高阶磁碟机种则使用拥有双倍的频宽的 Ultra160
介面。但这些高速的代价是昂贵的。SCSI 磁碟机至少比 IDE 机种贵了三分之一以上。不仅如此,您还得去买张 SCSI 卡。在近几年出厂的主机板均有
IDE 介面,只有少数主机板有随板附加 SCSI 晶片。如果您打算花那笔钱,您可以得到非常稳健的系统基础。但除了资料传输率,同样的IDE和SCSI磁碟机根本没啥不同。如果您用许多磁碟机组成一个
RAID 阵列模式,SCSI系统会比较快。不过 IDE 的发展也从 66Mbytes/s (ATA66-规格)到 100
Mbytes/s (ATA100-规格),甚至出现了 133Mbytes/s(ATA-133)。
受惠於 SCSI 的特殊功能(command queuing 指令堆叠)或是最新一代的系列,一些磁碟机可以达到更快的速度。高阶电脑通常需要最好的性能,所以最快的磁碟机种都是针对SCSI介面来研发的。
IDE,在另一方面来说,操作起来简单多了。由於一条IDE排线只能接两个磁碟机,所以只有 Master (主)或 Slave
(副)需要设。不须要去设磁碟机识别码(ID),也不需要接终端接头(termination)。近几年来,两个磁碟机不相容已非常少见。
硬体选择
当然,要做一些重要选择了,该选择哪一种硬碟?这应该是首要关心的事情。我们可以从服务的社群大小来分别。流量比较小的服务单位,例如:学校方面,IDE
的硬碟绝对够用,而且 IDE 的价格低廉,比较适合资金不甚宽裕的服务单位来使用;流量大的服务单位,例如:县网和区网,强烈建议使用
SCSI 的硬碟,因为高阶电脑通常需要最好的性能,所以最快的磁碟机种都是针对 SCSI 介面来研发的,为得到比较高的效能,建议使用。
- 记忆体要够大
在可能的范围内,尽量提高记忆体数量,记忆体数量若不足,会导致效能低落;记忆体的下限和硬碟中拿来做 Cache 的容量有关,和硬碟容量配合才能有效的利用记忆体。
Squid 所使用的记忆体数量,取决於它使用的 HD Cache 空间。HD Cache 越大,因为 Index Table
越大,所以需要的记忆体也越大。计算公式:
mem = Squid所需总记忆体
SZhd = Proxy Server的Cache Disk大小
SZobj = 每个物件的平均大小,统计值为8KByte
SZobjidx = 每个物件索引在索引表中的大小,在 Intel x86 CPU上固定值为 72Byte
SZhotobj = 在 Squid 设定档里面设定的最近取用物件阵列大小,也就是在 squid.conf 里的叁数 cache_mem
SZprg = Squid 程式执行时本身的大小,视编译时选项不同而变化,但小於 1Mbyte
举一范例:
假设某 server 预计配备 50GB 的硬碟总快取空间 (不含系统碟),且将 SZhotobj 设定为128MByte,则计算式如下
由以上的计算可以知道,一个有 50GB 快取空间的 proxy server 单单是 squid 所需要的记忆体就高达
579MByte。然而,一个 server 除了squid 以外,作业系统与其他的附属程式,例如将网路流量统计资料送出的 daemon,以及每天定时执行的
squid 效能分析程式等等,都需要占用记忆体。因此,整个系统需要的记忆体数量,必然是远大於 579MByte。
由於 Proxy Server 在进行快取比对的时候,必须在索引表中进行搜寻与比对的动作,如果记忆体不足,而使用 swap
取代,由於记忆体与 swap 的速度相差达3个数量级,故系统的效能会有明显的下降。
另外,squid 本身利用大量的硬碟空间储存快取资料(Cache Object),运作的时候原本就会有大量的硬碟读写动作,如果又加上
swap 那无疑是雪上加霜。
因此,建议将系统的记忆体尽可能的加大,并且在可能的范围内增加 SZhotobj 大小,利用高速的记忆体来存放经常用到的快取资料,减少
squid 硬碟的读写次数。
总归一句话:记忆体加到主机板可以用的极限,一定没错。
- CPU够用即可
在 Proxy Cache Server 会用到大量 CPU 运算,就是在流量统计和内容过滤,其实找 Pentium-III
等级以上的 CPU 大多够用,若发现 CPU 不够用应考虑软体方面问题,例如:流量统计可移到流量低的时间处理,内容过滤可考虑外加机器或写成比较精简的规则。建议:若要组效能比较高的
Proxy Server 时,可以使用双CPU,效果更为宏大,处理效率会提高,注意一点:OS 对於 SMP (Symmetric MultiProcessor) 的支援要不错,才能发挥潜力。
- 网路卡要稳定
这应该是首要条件,对外门户都不稳,再好机器也没有用武之地,故速度稳定是最为重要,尽可能和骨干网路有同等级的速度,而且较高级的网路卡比较不会影响到Server。最常见的就是
10/100BASE-T,大概市面上可以找到的。而且最好网路设备具备全双工,这样在高承载时,网路传输比较不会有拥塞情况产生。