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

Уменьшает ли производительность чтение файловой системы NFS?

Если клиент 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 в том, что он быстрый и эффективный, хотя его можно настроить.