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

Как сделать доступ к NFS намного быстрее

У нас есть веб-приложение с балансировкой нагрузки, которое обслуживает некоторые изображения с подключенного диска 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... ")