Я управляю установкой с 1 сервером под управлением Ubuntu 12.04 и 60 микроконтроллерами Raspberry Pi под управлением raspbian. Каждый Pi подключает к серверу диск NFS для чтения нового кода и хранения журналов.
Мы испытываем серьезную задержку в сети, и количество входящих и исходящих байтов сервера резко увеличилось (с 500 кБ / с до 8 МБ / с).
После выполнения nfsstat я заметил, что почти все вызовы - это "setcltid" и "setcltidconf". Я нигде не могу найти описание этих вызовов (google, man nfs / nfsstat, здесь), но что-то мне подсказывает, что они не должны составлять 99,99999% всех вызовов. Вот результат nfsstat:
Server rpc stats:
calls badcalls badclnt badauth xdrcall
79155136 0 0 0 0
Server nfs v3:
null getattr setattr lookup access readlink
1 100% 0 0% 0 0% 0 0% 0 0% 0 0%
read write create mkdir symlink mknod
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
remove rmdir rename link readdir readdirplus
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
fsstat fsinfo pathconf commit
0 0% 0 0% 0 0% 0 0%
Server nfs v4:
null compound
4 0% 79057350 99%
Server nfs v4 operations:
op0-unused op1-unused op2-future access close commit
0 0% 0 0% 0 0% 14461 0% 27901 0% 0 0%
create delegpurge delegreturn getattr getfh link
0 0% 0 0% 0 0% 93133 0% 36808 0% 0 0%
lock lockt locku lookup lookup_root nverify
0 0% 0 0% 0 0% 2927 0% 0 0% 0 0%
open openattr open_conf open_dgrd putfh putpubfh
66698 0% 0 0% 2586 0% 8 0% 128989 0% 0 0%
putrootfh read readdir readlink remove rename
3998 0% 1810 0% 13 0% 92 0% 0 0% 0 0%
renew restorefh savefh secinfo setattr setcltid
10299 0% 0 0% 0 0% 0 0% 370 0% 39754648 49%
setcltidconf verify write rellockowner bc_ctl bind_conn
39689677 49% 0 0% 7319 0% 0 0% 0 0% 0 0%
exchange_id create_ses destroy_ses free_stateid getdirdeleg getdevinfo
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
getdevlist layoutcommit layoutget layoutreturn secinfononam sequence
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
set_ssv test_stateid want_deleg destroy_clid reclaim_comp
0 0% 0 0% 0 0% 0 0% 0 0%
Client rpc stats:
calls retrans authrefrsh
0 0 0
Если кто-то может дать хоть какой-то совет, он будет очень признателен.
Какой твой clientaddr
установка на клиентов? Похоже на те же симптомы, что и эта ошибка:
При clientaddr = 0.0.0.0 команда nfsstat -s показала быстрое увеличение операций setcltid и setcltidconf на сервере и высокую загрузку операций ввода-вывода на корневом томе из-за записи информации v4recovery.