Linux NFS服务性能优化

kevin.Zhu 发布于:2013-1-16 0:55 分类:Debian  有 21 人浏览,获得评论 0 条  

NFS客户端的数目

在服务器端,一定要确保有足够的 NFS 内核线程来处理所有客户机.在默认情况Red Hat或者CentOS系统会启动8个线程.对于繁忙的 NFS 服务器,应该提高这个数字,比如3264.可以用 nfsstat -rc 命令评估客户机,了解是否有阻塞的现象,这个命令显示客户机远程过程调用(RPC)统计数据.

:

[root@berry disk]# nfsstat -rc

Client rpc stats:

calls retrans authrefrsh

44172868 177 44180949

[root@berry disk]# 第二列retrans177,这表示从上一次系统启动以来出现了177次重新传输的情况.这个数字比较大,就应该考虑增加NFS线程.

设置方法是将所需的线程数量设置到nfs,比如设置128 会启动 128 个线程.任何时候都可以进行这种设置.线程会根据需要启动或销毁.同样,这个设置应该放在启动脚本中,尤其是在系统上启用 NFS 的脚本.

RedHatCentos

vim /etc/init.d/nfs

找到下面这行修改

[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=29

如上,我修改的是启动29.随着nfsd数目的增加,平均负载会上升(可用uptime查看),就应减少nfsd数目.平时测试和客户端的数量一样多就行.

NFS队列的大小

linux 2.22.4内核里,默认的8nfsd的输入队列大小是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)


点击(此处)折叠或打开

  1. for i in `pidof nfsd`;

  2. do

  3. taskset -pc $core $i

  4. ((core++));

  5. done