Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7743328
  • 博文数量: 701
  • 博客积分: 2150
  • 博客等级: 上尉
  • 技术积分: 13233
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-29 16:28
个人简介

天行健,君子以自强不息!

文章分类

全部博文(701)

文章存档

2019年(2)

2018年(12)

2017年(76)

2016年(120)

2015年(178)

2014年(129)

2013年(123)

2012年(61)

分类: 架构设计与优化

2013-12-10 22:40:51

1. 查看
showmount -a

showmount -e
cat /etc/exports

2. 优化读写块大小
默认是4096bit,
测试写性能 time dd if=/dev/zero of=/mnt/nfs1/512mb.dat bs=16k count=32768
测试读性能 time dd if=/mnt/nfs1/512mb.dat of=/dev/null  bs=16k count=32768

改block大小,多测几次,看不同block下的性能
改block大小,
vi /etc/fstab 

nfs-server-ip:/nfs1 /mnt/nfs1 nfs rsize=8192,wsize=8192 0 0

3.优化MTU
$ tracepath nfsserver/2049
$ ifconfig eth0 mtu 512

4. 改守护进程的NFS数目
看性能
cat /proc/net/nfsd 
改进程数:
/etc/rc.d/init.d/nfs RPCNFSDCOUNT=16


5. 控制socket 输入队列大小
通常为65535byte (64KB),如果有8个NFS进程,每个只有8KB缓冲区用于存储输入队列的数据
改大小,
echo 262144 >/proc/sys/net/core/rmem_default

echo 262144 >/proc/sys/net/core/rmem_max

6. 管理报文碎片
未经处理的UDP报文碎片到达最高点,默认262144byte 也就是256KB,内核会丢弃正在送入的报文碎片,也就是会丢失报文,直到到达下限值
,默认192KB
NFS协议使用了分片的UDP报文,
cat /proc/sys/net/ipv4/ipfrag_high_thresh

echo 65546 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 1966 > /proc/sys/net/ipv4/ipfrag_low_thresh

7. 为啥nfs server断开后client端偶尔会不响应及解决办法

nfs server unavailable/unreachable后,client端偶尔会出现很诡异的情况:任何命令都跑不了/跑了没输出
这个问题在网上找了半天也没找到根本的原因,可能得读代码才能搞懂了,但是这个代码可不是一般的长......

找到了个解决办法,mount nfs的时候option制动为 intr, soft就可以避免如上这种情况:
intr: 默认情况下,当一个nfs 变得不可达后,在这个挂载点上的操作如ls、cd等会hang住。指定这个参数后,ls/cd之类的命令会收到信号EINTR 从而退出。
soft: 默认情况下,如果nfs server断开了,client这端会不停的尝试重新恢复连接而不是断开,这样频繁的重试会导致系统hang住,但是为啥就不知道了。指定soft后,client会timeout抛出异常而不是一直傻试。
阅读(1439) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~