Linux NFS服务性能优化
kevin.Zhu 发布于:2013-1-16 0:55 分类:Debian 有 21 人浏览,获得评论 0 条
NFS客户端的数目
在服务器端,一定要确保有足够的 NFS 内核线程来处理所有客户机.在默认情况Red Hat或者CentOS系统会启动8个线程.对于繁忙的 NFS 服务器,应该提高这个数字,比如32或64.可以用 nfsstat -rc 命令评估客户机,了解是否有阻塞的现象,这个命令显示客户机远程过程调用(RPC)统计数据.
例:
[root@berry disk]# nfsstat -rc
Client rpc stats:
calls retrans authrefrsh
44172868 177 44180949
[root@berry disk]# 第二列retrans是177,这表示从上一次系统启动以来出现了177次重新传输的情况.这个数字比较大,就应该考虑增加NFS线程.
设置方法是将所需的线程数量设置到nfs,比如设置128 会启动 128 个线程.任何时候都可以进行这种设置.线程会根据需要启动或销毁.同样,这个设置应该放在启动脚本中,尤其是在系统上启用 NFS 的脚本.
如RedHat和Centos
vim /etc/init.d/nfs
找到下面这行修改
[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=29
如上,我修改的是启动29个.随着nfsd数目的增加,平均负载会上升(可用uptime查看),就应减少nfsd数目.平时测试和客户端的数量一样多就行.
NFS队列的大小
在linux 2.2和2.4内核里,默认的8个nfsd的输入队列大小是64K,2.6内核是108K.下面将设置为较合理的值256K
# echo 262144 > /proc/sys/net/core/rmem_default
# echo 262144 > /proc/sys/net/core/rmem_max
# echo 262144 > /proc/sys/net/core/wmmen_default
# echo 262144 > /proc/sys/net/core/wmmen_max
利用taskset命令将NFS进程均匀绑定到cpu核心上(多核心的cpu):
点击(此处)折叠或打开
-
for i in `pidof nfsd`;
-
do
-
taskset -pc $core $i
-
((core++));
-
done