web-dev-qa-db-ja.com

NFSクライアントが15秒間ハングすることがあります

NFSサーバー:CentOS7.1(カーネル3.10.0-229、nfs-utils 1.3.0)

一部のクライアントは、NFSv3を使用するUbuntu Precise(12.04)です...正常に動作します。

問題のあるクライアントは、NFSv4.1(またはNFSv4.0)を使用してCentOS7.1を実行しています。それらのほとんどの時間、物事はうまくいきます。ただし、ファイルを書き込むと15秒のタイムアウトが発生する場合があります。これらは小さなファイル(<10KiB)です。

15秒後、書き込みは終了し、ファイルの内容は正しくなります。

最も目立つのは、viでファイルを保存するときです。それは約5%の時間しか発生しません(しかし、それはとてもイライラするので、実際よりも頻繁に発生しているように感じます)。

今日、それは数百のファイル(それぞれ2KiB-5KiB)でrsyncを実行しているときに起こりました。 rsyncプロセスでstraceを実行し、50%以上の時間で発生していることを確認できました。

# Sudo strace -ttt -T -p 14186
Process 14186 attached
1452694932.030892 select(9, [8], [], NULL, {55, 59875}) = 1 (in [8], left {44, 963900}) <10.096109>
1452694942.127262 read(8, "\4\0\0k\10\3\0\0", 8184) = 8 <0.000038>
1452694942.127378 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {59, 997018}) <0.003029>
1452694942.130529 read(8, "\4\0\0k\t\3\0\0", 8184) = 8 <0.000040>
1452694942.130715 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {44, 963694}) <15.036348>
1452694957.167236 read(8, "\4\0\0k\n\3\0\0", 8184) = 8 <0.000071>
1452694957.167419 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {59, 996528}) <0.003572>
1452694957.171122 read(8, "\4\0\0k\v\3\0\0", 8184) = 8 <0.000112>
1452694957.171340 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {44, 964372}) <15.035715>
1452694972.207210 read(8, "\4\0\0k\f\3\0\0", 8184) = 8 <0.000026>
1452694972.207303 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {44, 960236}) <15.039908>
1452694987.247375 read(8, "\4\0\0k\r\3\0\0", 8184) = 8 <0.000111>
1452694987.247616 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {44, 960455}) <15.039628>
1452695002.287486 read(8, "\4\0\0k\16\3\0\0", 8184) = 8 <0.000100>
1452695002.287665 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {59, 996177}) <0.004000>
1452695002.291819 read(8, "\4\0\0k\17\3\0\0", 8184) = 8 <0.000089>
1452695002.292014 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {44, 964982}) <15.035132>
1452695017.327303 read(8, "\4\0\0k\20\3\0\0", 8184) = 8 <0.000082>
1452695017.327491 select(9, [8], [], NULL, {60, 0}) = 1 (in [8], left {59, 995793}) <0.004300>
1452695017.331931 read(8, "\4\0\0k\21\3\0\0", 8184) = 8 <0.000052>

私は他の誰もこの問題について尋ねているのを見たことがありません。私は一人ですか?

編集:

マウントオプション:

nfs:/storage on /space type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=14,retrans=2,sec=sys,clientaddr=10.12.32.4,local_lock=none,addr=10.12.32.31)

/ etc/exportsの内容:

/storage 10.0.0.0/8(rw,async,no_root_squash,no_subtree_check,mp=/storage)
2
TheAmigo

他のrsync子プロセスでstraceを実行すると、rename()呼び出し中にハングしていることがわかりました。それは私がそれがこのバグであることに気づきました:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=799838

noatimeマウントオプションを設定することで回避しました。

0
TheAmigo