二、软件环境优化

如果我们没有很高硬件环境,可以考虑从软件方面优化性能.

1、清理NFS服务器磁盘碎片:

不论Linux文件系统采用什么文件格式ext3、JFS、XFS、ReiserFS )、何种类型的硬盘(IDE 、SCSI),随着时间的推移文件系统都会趋向于碎片化.ext3、JFS等高级文件系统可以减少文件系统的碎片化,但是并没有消除.在繁忙的数据库服务 器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性能从硬盘读出或写入数据时才能注意到.时间长了会发现每个磁盘上确实积累了非常多的垃圾文件,释 放磁盘空间可以帮助系统更好地工作.Linux最好的整理磁盘碎片的方法是做一个完全的备份,重新格式化分区,然后从备份恢复文件.但是对于7×24小时 工作关键任务服务器来说是比较困难的.Kleandisk是一个高效的磁盘清理工具,它能把磁盘上的文件分成不同的"组",比如把所有的"core"文件 归成一组Group),这样要删除所有core文件时只要删除这个组就行了.core文件是当软件运行出错时产生的文件,它对于软件开发人员比较有用, 对于其他用户比如电子邮件服务器)却没有任何意义.因此,如果没有软件开发的需要,见到core文件就可以将其删除.

2、开启硬盘DMA

现在使用的IDE硬盘基本支持DMA66/100/133直接内存读取)但是Linux发行版本安装后一般没有打开,可以 /etc/rc.d/rc.local 最後面加上一行: /sbin/hdparm -d1 –x66 -c3 -m16 /dev/hda 这样以后每次开机,硬盘的 DMA 就会开启,不必每次手动设定.添加前后你可以使用命令:hdparm -Tt /dev/hda 来测试对比一下.

3、调整缓冲区刷新参数

Linux内核中,包含了一些对于系统运行态的可设置参数.缓冲刷新的参数可以通过调整 /proc/sys/vm/bdflush文件来完成,这个文件的格式是这样的:

# cat /proc/sys/vm/bdflush30 64 64 256 500 3000 60 0 0

每一栏是一个参数,其中最重要的是前面几个参数.第一个数字是在"dirty"缓冲区达到多少的时候强制唤醒bdflush进程刷新硬盘,第二 个数字是每次让bdflush进程刷新多少个dirty块.所谓dirty块是必须写到磁盘中的缓存块.接下来的参数是每次允许bd flush将多少个内存块排入空闲的缓冲块列表. 以上值为RHEL 4.0中的缺省值.可以使用两种方法修改:

1)使用命令

# echo "100 128 128 512 5000 3000 60 0 0″>/proc/sys/vm/bdflush

并将这条命令加到/etc/rc.d/rc.local文件中去.

2)在/etc/sysctl.conf 文件中加入如下行:

vm.bdflush = 100 128 128 512 5000 3000 60 0 0

以上的设置加大了缓冲区大小,降低了bdflush被启动的频度,VFS的缓冲刷新机制是Linux文件系统高效的原因之一.

4、NFS版本的选择

NFS协议从诞生到现在为止,已经有多个版本,如NFS V2rfc1094),NFS V3rfc1813)最新的版本是V4 rfc3010).最早,Sun公司曾将NFS v2设计成为只使用UDP协议,主要原因是当时机器的内存、网络速度和CPU的影响,不得不选择对机器负担较轻的方式.而到了NFS v3,Sun公司选择了TCP协议作为缺省的传输方式.


相关内容