У нас есть веб-приложение с балансировкой нагрузки, которое обслуживает некоторые изображения с подключенного диска NFS.
Когда сервер NFS выходит из строя, он прекращает работу всех веб-экземпляров.
В настоящее время том смонтирован с помощью:
ip:/path/to/images /docroot/images nfs soft,intr,rw,rsize=32768,wsize=32768 0 0
Я провел осадный тест для набора изображений, которые живут на этом томе, и, когда он отключился, запросы заканчивались тайм-аутом на основе значения тайм-аута apache (которое было установлено на 600 секунд для этого теста).
Я изменил параметры крепления на:
bg,soft,intr,rw,rsize=32768,wsize=32768,timeo=5,retrans=2,actimeo=60,retry=15
И это было лучше, но все равно прошло слишком много времени, чтобы потерпеть неудачу: первый набор запросов истек примерно через 30 секунд, но следующий набор занял от 180 до 300 секунд.
Я знаю, что долгосрочным решением является перенос их на S3, но можно ли сократить это время до 5-10 секунд без ущерба для производительности?
Мягкое монтирование rw может «в некоторых случаях вызывать незаметное повреждение данных». Рассмотрите возможность использования крепления ro. Предполагая, что Linux - это ОС, Справочная страница NFS перечисляет параметры монтирования, которые вы можете изменить. Без тестирования, учитывая мягкое крепление TCP (только чтение) timeo=1
и retrans=3
вызовет сбой операции через 6 секунд. ("Клиент NFS выполняет линейную отсрочку передачи: после каждой повторной передачи время ожидания увеличивается на timeo
... ")