具有快速网络和平均IOPS磁盘的NFS v4。大文件传输时负载增加很高。 问题似乎是IOPS。
测试用例:
/etc/exports
server# /mnt/exports 192.168.6.0/24(rw,sync,no_subtree_check,no_root_squash,fsid=0)
server# /mnt/exports/nfs 192.168.6.0/24(rw,sync,no_subtree_check,no_root_squash)
client# mount -t nfs 192.168.6.131:/nfs /mnt/nfstest -vvv
(or client# mount -t nfs 192.168.6.131:/nfs /mnt/nfstest -o nfsvers=4,tcp,port=2049,async -vvv)
它运作良好,同步'旗帜,但是transger drop形成50MB / s到500kb / s
http://ubuntuforums.org/archive/index.php/t-1478413.html 这个话题似乎是通过将wsize减少到wsize = 300来解决的 - 小改进但不是解决方案。
使用dd进行简单测试:
client# dd if=/dev/zero bs=1M count=6000 |pv | dd of=/mnt/nfstest/delete_me
server# iotop
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1863 be/4 root 0.00 B/s 14.17 M/s 0.00 % 21.14 % [nfsd]
1864 be/4 root 0.00 B/s 7.42 M/s 0.00 % 17.39 % [nfsd]
1858 be/4 root 0.00 B/s 6.32 M/s 0.00 % 13.09 % [nfsd]
1861 be/4 root 0.00 B/s 13.26 M/s 0.00 % 12.03 % [nfsd]
server# dstat -r --top-io-adv --top-io --top-bio --aio -l -n -m
--io/total- -------most-expensive-i/o-process------- ----most-expensive---- ----most-expensive---- async ---load-avg--- -NET/total- ------memory-usage-----
read writ|process pid read write cpu| i/o process | block i/o process | #aio| 1m 5m 15m | recv send| used buff cach free
10.9 81.4 |init [2] 1 5526B 20k0.0%|init [2] 5526B 20k|nfsd 10B 407k| 0 |2.92 1.01 0.54| 0 0 |29.3M 78.9M 212M 4184k
1.00 1196 |sshd: root@pts/0 1943 1227B1264B 0%|sshd: root@1227B 1264B|nfsd 0 15M| 0 |2.92 1.01 0.54| 44M 319k|29.1M 78.9M 212M 4444k
0 1365 |sshd: root@pts/0 1943 485B 528B 0%|sshd: root@ 485B 528B|nfsd 0 16M| 0 |2.92 1.01 0.54| 51M 318k|29.5M 78.9M 212M 4708k
您是否知道在没有大的配置更改的情况下限制负载的任何方法?
我确实考虑过使用wondershaper或iptables来限制网络速度,但这并不好,因为其他流量也会受到损害。
有人建议cgroups - 可能值得解决 - 但它仍然不是我的风水' - 我希望在NFS配置中找到解决方案 - 因为问题在这里,在一个地方解决方案中会很不错。
如果可以增加同步'速度达到10-20MB / s对我来说已足够了。
答案 0 :(得分:0)
我想我已经钉了它:
在服务器上,更改磁盘scheduller:
for i in /sys/block/sd*/queue/scheduler ; do echo deadline > $i ; done
另外(小改进 - 找到你的最佳价值):
/etc/default/nfs-kernel-server
# Number of servers to start up
-RPCNFSDCOUNT=8
+RPCNFSDCOUNT=2
重启服务
/etc/init.d/rpcbind restart
/etc/init.d/nfs-kernel-server restart
PS: 我目前的配置
服务器:
/etc/exports
/mnt/exports 192.168.6.0/24(rw,no_subtree_check,no_root_squash,fsid=0)
/mnt/exports/nfs 192.168.6.0/24(rw,no_subtree_check,no_root_squash)
客户端:
/etc/fstab
192.168.6.131:/nfs /mnt/nfstest nfs rsize=32768,wsize=32768,tcp,port=2049 0 0