Назад | Перейти на главную страницу

Клиенты NFS иногда зависают на 15 секунд

Сервер NFS: CentOS7.1 (ядро 3.10.0-229, nfs-utils 1.3.0)

Некоторые клиенты - это Ubuntu Precise (12.04), использующие NFSv3 ... они работают нормально.

Проблемные клиенты работают под управлением CentOS7.1 с использованием NFSv4.1 (или NFSv4.0). В большинстве случаев все работает нормально. Но иногда при записи файла возникает таймаут в 15 секунд. Это небольшие файлы (<10 КБ).

Через 15 секунд запись завершается, и файл имеет правильное содержимое.

Это наиболее заметно при сохранении файлов с помощью vi. Это происходит только в 5% случаев (но из-за того, что это так расстраивает, кажется, что это происходит чаще, чем есть на самом деле).

Сегодня это случилось при запуске rsync на нескольких сотнях файлов (2–5 КБ каждый). Мне удалось запустить strace для процесса rsync и увидеть, что это происходит более 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)

Запуск strace на другом дочернем процессе rsync показал, что он завис во время вызова rename (). Это привело меня к выводу, что это ошибка:

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

Я обошел это, установив noatime вариант крепления.