现在的位置: 首页 > 综合 > 正文

nfs优化3

2017年12月22日 ⁄ 综合 ⁄ 共 1875字 ⁄ 字号 评论关闭

设置块大小


mount

命令的
risize

wsize
指定了
server
端和
client
端的传输的块大小。如果没有指定,那么,系统根据
nfs


的版本来设置缺省的
risize

wsize
大小。大多数情况是
4K

4096bytes
),对于
nfs


v2
,最大是
8K
,对于
v3
,在
server
端设置
risize

wsize
的限制,最大块大小在
kernel
的常量
NFSSVC_MAXBLKSIZE,
该常量在
usr/src/linux2.4/include/linux/nfsd/const.h.
所有的
2.4
的的
client
都支持最大
32K
的传输块。系统缺省的块可能会太大或者太小,这主要取决于你的
kernel
和你的网卡,太大或者太小都有可能导致
nfs


速度很慢。具体的可以使用
Bonnie

Bonnie++

iozone

benchmark
来测试不同
risize

wsize

nfs


的速度。当然,也可以使用
dd
来测试。

  


time dd if=/dev/zero of=/testfs/testfile bs=8k count=1024
这是来测试
nfs




  


time dd if=/testfs/testfile of=/dev/null bs=8k
这是测试
nfs





测试时文件的大小至少时系统
RAM
的两倍,每次测试都使用
umount

mount

/testfs
进行挂载,通过比较不同的块大小,得到优化的块大小。

 



nfs


挂载的优化

  
timeo:

如果超时,客户端等待的时间,以十分之一秒计算。

retrans

:超时尝试的次数。

bg

:后台挂载,很有用

hard

:如果
server
端没有响应,那么客户端一直尝试挂载。

wsize

:写块大小

rsize

:读块大小

intr

:可以中断不成功的挂载

noatime

:不更新文件的
inode
访问时间,可以提高速度。

async

:异步读写。

nfsd

进程的个数



缺省的系统在启动时,有
8

nfsd
进程。

#ps -efl|grep nfsd

通过查看
/proc/net/rpc/nfsd
文件的
th
行,第一个是
nfsd
的个数,后十个是线程是用的时间数,第二个到第四个值如果很大,那么就需要增加
nfsd
的个数。


具体如下:

#vi /etc/init.d/nfs

找到
RPCNFSDCOUNT,
修改该值,一般和
client
端数目一致。


然后,重启服务。

#service

nfs


restart
#mount –a

nfsd

的队列长度



对于
8

nfsd
进程,系统的
nfsd
队列长度是
64k
大小,如果是多于
8
个,就要相应的增加相应的队列大小,具体的在
/proc/sys/net/core/

rw

mem_default

/proc/sys/net/core/

rw

mem_max
。队列的长度最好是每一个
nfsd

8k
的大小。这样,
server
端就可以对
client
的请求作排队处理。如果要永久更改此值

#vi /etc/sysctl.conf

加入

net.core.


rw

mem_max=
数目

net.core.


rw

mem_default=
数目

#service

nfs


restart

网络传输包的大小


网络在包传输过程,对包要进行分组,过大或者过小都不能很好的利用网络的带宽,所以对网络要进行测试和调优。可以使用
ping -s 2048 -f hostname
进行
ping
,尝试不同的
package size
,这样可以看到包的丢失情况。同时,可以使用
nfsstat

o net
测试
nfs


使用
udp
传输时丢包的多少。

因为统计不能清零,所以要先运行此命令记住该值,然后可以再次运行统计。如果,经过上面的统计丢包很多。那么可以看看网络传输包的大小。使用下面的命令:

 

#tracepath node1/
端口号

#ifconfig eth0

较网卡的
mtu
和刚刚的
pmtu
,使用
#ifconfig eth0 mtu 16436
设置网卡的
mtu
和测试的一致。


当然如果
risize

wsize

mtu
的值大,那么的话,
server
端的包传到
client
端就要进行重组,这是要消耗
client
端的
cpu
资源。此外,包重组可能导致网络的不可信和丢包,任何的丢包都会是的
rpc
请求重新传输,
rpc
请求的重传有会导致超时,严重降低
nfs


的性能。可以通过查看
/proc/sys/net/ipv4/ipfrag_high_thresh

/proc/sys/net/ipv4/ipfrag_low_thresh
了解系统可以处理的包的数目,如果网络包到达了
ipfrag_high_thresh
,那么系统就会开始丢包,直到包的数目到达
ipfrag_low_thresh

抱歉!评论已关闭.