У нас был NFS-сервер, который работал с небольшими задержками. Однако по мере того, как на нескольких клиентах (обслуживаемых одним сервером) создавалось больше точек монтирования, мы заметили, что производительность резко падает, и большее количество пользователей не может монтировать или cd
в смонтированный NFS. У меня вопрос: могут ли несколько точек NFS на нескольких клиентских машинах (даже если они простаивают) повлиять на производительность? Если да, то как это повлияет?
Да, большее количество клиентов может повлиять на ввод-вывод. NFS имеет ограниченное количество NFS IOD, ограниченное RPCNFSDCOUNT = (расположение зависит от дистрибутива). Однако счетчик NFSD имеет точку уменьшения отдачи, в зависимости от того, сколько клиентов монтируются с асинхронным или синхронным подключением и что они делают. На вашем сервере NFS вы можете увидеть их блокировку с помощью пс auxw | grep D найти NFSD в непрерывном сне. Когда это происходит, вы также можете увидеть увеличение очереди выполнения. Вы также увидите заблокированные процессы (второй столбец vmwstat). Вы упомянули, что они простаивают, но уверены ли вы в этом, просматривая статистику сети и rpcinfo?
Вы можете попробовать увеличить RPCNFSDCOUNT и перезапустить nfsd, чтобы увидеть, уменьшится ли эффект.
Неактивные точки монтирования клиента не должны влиять на производительность вашего сервера NFS, поскольку они не вызывают операций ввода-вывода. Для хранения состояния монтирования они используют очень небольшой объем памяти.
Вы действительно должны убедиться, что эти клиенты «простаивают». Нередко бывает, что на клиентском компьютере какой-либо искатель (mlocate / slocate, индексаторы рабочего стола и т. Д.) Недостаточно умен, чтобы избежать точки монтирования NFS.
Также некоторые системы уведомлений об изменении файлов на клиентах будут автоматически опрашивать ваш сервер NFS, поскольку для этой цели NFS не предоставляет механизма обратного вызова.
Что еще более забавно, полное сканирование может выполняться с каждой попытки завершения в оболочке, если точка монтирования появится в клиентской переменной PATH.
И так далее.
NFS в основном прозрачна для клиентов, поэтому я видел, как люди подключаются к NFS - даже без их ведома - бесчисленное множество.
Если ваши клиенты - Unices, попробуйте watch -n2 nfsstat -c
чтобы проверить отправляемый ими ввод-вывод NFS.