У нас возникла проблема, которая периодически возникает во время развертывания кода. NFS кэширует файлы по мере их чтения, но если файл читается во время развертывания кода, он остается в грязном состоянии, как если бы файл не был изменен во время развертывания. Единственный способ решить эту проблему - очистить кеш NFS после развертывания.
Наш веб-сервер возвращает пустые страницы для всех запросов, пока кеш NFS не будет очищен.
Есть ли настройка или у кого-нибудь есть предложения, как это исправить?
В данный момент мы используем NFS v3.
Существуют различные варианты кеширования атрибутов файла при монтировании NFS (на стороне клиента):
NOAC
Используйте опцию монтирования noac для достижения согласованности кэша атрибутов между несколькими клиентами. Почти каждая операция с файловой системой проверяет информацию об атрибутах файла. Клиент хранит эту информацию в кэше в течение определенного периода времени, чтобы снизить нагрузку на сеть и сервер. Когда действует noac, клиентский кеш атрибутов файлов отключен, поэтому каждая операция, которая должна проверять атрибуты файла, вынуждена возвращаться на сервер. Это позволяет клиенту очень быстро видеть изменения в файле за счет множества дополнительных сетевых операций.lookupcache = none
Если клиент игнорирует свой кеш и проверяет каждый запрос поиска приложения с сервером, этот клиент может немедленно обнаружить, когда новая запись каталога была создана или удалена другим клиентом. Вы можете указать это поведение с помощью lookupcache = none. Дополнительные запросы NFS, необходимые, если клиент не кэширует записи каталога, могут снизить производительность. Отключение кэширования поиска должно привести к меньшему снижению производительности, чем при использовании noac, и не влияет на то, как клиент NFS кэширует атрибуты файлов.actimeo = n
Использование actimeo устанавливает для всех acregmin, acregmax, acdirmin и acdirmax одинаковое значение.
- acregmin = n, минимальное время (в секундах), в течение которого клиент NFS кэширует атрибуты обычного файла, прежде чем он запросит новую информацию об атрибутах с сервера. Если этот параметр не указан, клиент NFS использует минимум 3 секунды.
- acregmax = n, максимальное время (в секундах), в течение которого клиент NFS кэширует атрибуты обычного файла, прежде чем он запросит новую информацию об атрибутах с сервера. Если этот параметр не указан, клиент NFS использует максимум 60 секунд.
- acdirmin = n, минимальное время (в секундах), в течение которого клиент NFS кэширует атрибуты каталога, прежде чем он запросит новую информацию об атрибутах с сервера. Если этот параметр не указан, NFS
клиент использует минимум 30 секунд.- acdirmax = n, максимальное время (в секундах), в течение которого клиент NFS кэширует атрибуты каталога, прежде чем он запросит новую информацию об атрибутах с сервера. Если этот параметр не указан, NFS
клиент использует максимум 60 секунд.
Взято из Страница руководства NFS.
Надеюсь, это поможет.
Вы указали множество параметров NFS, большинство из которых (rsize / wsize / soft) не нужны, потому что они уже (обычно) по умолчанию (в Linux);
Параметры монтирования NFS
rsize=32768,wsize=32768,timeo=30,retrans=10,intr,noatime,soft,async,nodev
Однако, если вы работаете в Linux, вам, вероятно, следует рассмотреть возможность установки следующих параметров NFS;
actimeo=3
(устанавливает acreg [max | min], acdir [max | min], может быть уменьшено до 1, если вы все еще наблюдаете проблемы со скоростью)
lookupcache=none
(полностью игнорирует кеш, по умолчанию "все")
noac
(Отключает кеширование атрибутов)
это Сообщение блога кажется, есть больше информации