NFS - вопрос PHP - PullRequest
       17

NFS - вопрос PHP

3 голосов
/ 16 февраля 2012

Мы столкнулись со странной проблемой.У нас есть NFS с двумя компьютерами, установленными с этим в режиме только для чтения.Всякий раз, когда мы загружаем файл включения, внезапно мы получаем ошибку 500 в PHP.Когда мы отслеживаем выполнение кода, мы обнаруживаем, что возникла ошибка из-за проблемы с найденным файлом включения.Но физически файл присутствует на диске и очень хорошо читается.Когда мы демонтируем и монтируем его снова, эта ошибка устраняется.Эта проблема возникает случайно, когда мы загружаем файл.

Мы не можем получить никакой подсказки.Любые материалы будут с благодарностью.

Заранее спасибо.

1 Ответ

4 голосов
/ 16 февраля 2012

Похоже, это может быть проблема с блокировкой файла.NFS может блокировать файлы, которые выполняются / получают к ним доступ, в то время как другие пользователи не имеют к ним доступа.Реализованный в плохой моде, он может привести к взаимоблокировке, которая приводит к тому, что файл становится бесполезным до тех пор, пока не будет удалено приложение, обращающееся к нему.рекомендовал бы проверить, как настроена ваша NFS в отношении блокировки файлов, и рассмотреть ее в соответствии с вашими потребностями в доступе к ней.

Если это только для чтения, вам не нужно включать блокировку файлов, так как основным преимуществом блокировки файлов является предотвращение одновременной записи двумя людьми в одно место или когда кто-то пишет вместоположение, не позволяющее кому-либо прочитать устаревшую или не полностью законченную версию данных.В качестве точки данных только для чтения это не требуется в этой ситуации.

Обновление:

Чтобы отключить блокировку файлов в Linux NFS, при подключении точки NFS впараметры, которые вы ему назначаете, добавьте nolock.

Например, если это был ваш / etc / fstab:

/dev/hda2   /   ext2    defaults    1 1
/dev/hdb1   /home   ext2    defaults    1 2
/dev/cdrom  /media/cdrom    auto    ro,noauto,user,exec 0 0
/dev/fd0    /media/floppy   auto    rw,noauto,user,sync 0 0
proc    /proc   proc    defaults    0 0
/dev/hda1   swap    swap    pri=42  0 0
nfssrv.server.com:/content  /opt/content  nfs  rw,bg,soft,actimeo=0,rsize=8192         0 0

Вы бы изменили его на:

/dev/hda2   /   ext2    defaults    1 1
/dev/hdb1   /home   ext2    defaults    1 2
/dev/cdrom  /media/cdrom    auto    ro,noauto,user,exec 0 0
/dev/fd0    /media/floppy   auto    rw,noauto,user,sync 0 0
proc    /proc   proc    defaults    0 0
/dev/hda1   swap    swap    pri=42  0 0
nfssrv.server.com:/content  /opt/content  nfs  rw,bg,soft,actimeo=0,rsize=8192,nolock         0 0
...