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

Почему Apache обслуживает устаревшие файлы из NFS, несмотря на, казалось бы, правильную конфигурацию?

У меня есть две машины CentOS (виртуализированные) с подключенным общим ресурсом NFS со следующим в /etc/fstab:

<ipaddr>:/mnt/nfsshare   /mnt/nfsshare              nfs rsize=1024,wsize=1024,timeo=14,intr,cto,relatime 0 0

у меня есть EnableMMAP Off и EnableSendfile Off в каждой конфигурации Apache. Другой сервер, подключенный к NFS, будет иногда копировать файл CSS с обновленной версией (например, когда кто-то применяет изменения из промежуточной). Из оболочки это обновление, похоже, проходит (т.е. обновленная отметка времени и cat показывает правильные данные).

Однако загрузка файла из браузера или других инструментов показывает устаревшую версию. Иногда я даже вижу разные ответы (два сервера Apache сбалансированы по нагрузке). Через некоторое время кажется, что изменение будет выполнено, и Apache вернет правильное содержимое файла, но обычно это занимает минуту или две.

Вы можете попробовать заменить cot на noac и полностью отключить кеширование, хотя, если это единственное место, где это появляется, вы можете получить некоторые штрафы за производительность. Другой вариант - установить acregmax = 10, при котором атрибуты будут кэшироваться не дольше 10 секунд - по умолчанию все атрибуты кэшируются на 60 секунд, и хотя 'cto' говорит, что атрибуты следует проверять в open () и close () отдельные процессы apache могут по-прежнему зависеть от файловых дескрипторов или чего-то еще.