Если клиент NFS читает файл, происходит ли сетевой трафик? или это просто запись (любым узлом), которая приводит к сетевому трафику?
В частности, меня интересует, будет ли file_exists()
вызов в сценарии PHP будет дороже, если целевой файл находится в NFS, чем если целевой файл находится в собственной файловой системе?
Для справки это моя конфигурация NFS:
Сервер /etc/exports
:
/var/www/staging/uploads 192.168.0.1(rw,sync,no_root_squash)
Клиент /etc/fstab
:
192.168.0.1:/var/www/staging/uploads /var/www/staging/uploads nfs soft,intr,rsize=8192,wsize=8192
Да, трафик действительно есть. В вашем конкретном случае использования PHP проверит, существует ли файл на самом деле.
Однако вы будете удивлены, насколько популярна NFS для веб-сервисов. Я могу вспомнить один большой дом для ведения блогов, который используется как хранилище файлов для изображений. Однако они вызывают файл из NFS только один раз, а затем его кешируют.
Лучше всего несколько раз профилировать свой скрипт, чтобы увидеть, сколько накладных расходов связано с запросом NFS Vs. местный запрос. Xdebug поможет вам в этом.
Чтобы определить, сколько сетевых накладных расходов задействовано, запустите TCPDump / Wire shark во время выполнения запроса. Затем просмотрите результат. Это должно дать вам представление о том, что будет задействовано в каждом запросе.
Вы также можете смонтировать общий ресурс NFS с опцией UDP. Это немного ускорит процесс.
Вам действительно нужна быстрая внутренняя сеть, если вы собираетесь распространить ее на веб-ферму с очень высокой ценой. Так что, если у вас есть возможность использовать локальное хранилище, я бы попробовал это сделать.
Чтения вызовут трафик. вызовы file stat () вызовут трафик. У клиентов есть кеш, но он очень недолговечный, и на него нельзя положиться.
Никто и никогда не обвинял NFS в том, что он быстрый и эффективный, хотя его можно настроить.