一、缺点及缺陷
①文件系统
FreeBSD 的文件系统属于中上水平,但未达至企业级的应用需求。主要体现于文件系统本身存在的脆弱性。在高负载的情况下,文件系统存在有崩溃的可能性。需要注意的 是,导致这样的结果,也有可能由于磁盘控制器(SCSI, RAID 等等)驱动程序本身导致的。没有原厂设备驱动程序是个比较大的问题。
②网卡驱动
FreeBSD 的网络性能是无用置疑的!但是网卡驱动(是的,设备驱动是个很重要的因素)不完善会导致性能和稳定性大打节扣。虽然这与 FreeBSD 的核心没有关系,但对于一个可提供服务的整体来说,驱动程序却是一个很重要的组成部份。
另外,由于一个网卡接口上的线的松动,有可能导致网络中断。而一些商业化的 UNIX 操作系统可以在当主网卡不可用时将该网卡上的 IP 转移至可提供正确连接的网卡上。
③多处理器(超线程)支持
在 6.0 出版之前,FreeBSD 对多处理器支持是不尽人意的。INTEL CPU 提供有 HT(超线程)功能。FreeBSD 在 HT 开启的状态下会比在关闭的状态下差。我忘记了超线程的原理,只记得拥有超线程功能的 CPU 在过多的切换情况下性能就会降低,不过在什么时候切换和切换些什么我忘记了。FreeBSD 在开启 HT 后性能会变差,可能与这个有关。
二、出众之处
①网络
FreeBSD 的网络性能非常好,可以同时处理海量的网络请求,这使 BSD 非常适合作为防火墙的环境。另外,在网络聊天服务器,如 IM 这种应用上,FreeBSD 也是很合适的选择。网易的 POPO 聊天软件服务器端就是在 FreeBSD 下开发并投入到实际环境中使用的,通过对内核的修改,可以轻松支持数以万计的用户连接,要注意,是永久性的连接,除非用户点击注销按钮。
②内存
你会发现你服务器上的内存会被 FreeBSD 很好地利用,以使你的服务达至最佳的状态。FreeBSD 不会因为将过多的内存用于磁盘 CACHE 而使更重要的程序获取不到物理内存而让系统使用 SWAP。在实际的环境中,我就遇到过 LINUX 为保持磁盘的 CACHE,而让新任务使用 SWAP,导致新任务执行时间大大拉长。在执行 swapoff -a 操作后,运行同样的新任务只需要原来时间的一半。而系统并没有因为关闭 SWAP 而停机,表示物理内存并没有因为新任务而被耗尽。
举例说明其优点:
Memcached 是一个非常出众的基于内存的缓存服务器。它可以为被其支持的程序语言提供串行化数据保存的功能,这样可以让同一份数据被多台服务器共享,而更重要的是,它的速度非常快。
我们可以利用 PHP 或 JAVA 从数据库中获取数据结果集,然后将结果集的内容保存进 Memcached,其他服务器上的程序同样可以相应的 key 从 Memcached 中获得相同的拷贝。在分布式的环境,这种需求非常明显。我自己也尝试当 SESSION 数据保存至 Memcached 而无需为共享 SESSION 数据而专门架设一台 MYSQL 数据库。
在利用Memcached 作为数据的中心点,网络的流量会非常大,内存的使用会非常频繁,基本上不与磁盘打交道,而且整个系统的稳健性要求非常高。在这种应用需求下,FreeBSD 自然地成为首选。因为它为高效的网络性能,更合理的内存利用率,和稳健的系统基础。