У меня есть диск AWS EFS, установленный на FTP-сервере. Я наблюдаю проблемы, когда производительность иногда становится очень низкой. В общедоступном каталоге находится около 10 000 небольших текстовых файлов, и при интенсивном трафике (~ 30-40 одновременных пользователей) работа FTP LIST зависает. Даже выполнение команды ls в терминале Linux в том же каталоге в это время выполняется медленно. Strace для соответствующего процесса proftp и команды ls показывает, что он застрял на системном вызове getdent.
На резервном FTP-сервере установлен тот же диск, и когда я выполняю команду перемещения в этом каталоге для архивации некоторых из этих 10К файлов, я замечаю, что основной FTP-сервер зависает при операции LIST, в то время как резервный сервер выполняет операцию перемещения.
Все показатели как на сервере, так и на диске EFS показывают, что ресурсы находятся в пределах нормы. Когда операция LIST зависает на главном FTP-сервере, ЦП находится в режиме бездействия на 99%, то количество ЦП незначительно. Все дочерние процессы proftp переходят в режим непрерывного сна D, пока они ждут, пока получатели вернут список из 10 000 каталогов.
Метрики EFS не показывают проблем с пакетными кредитами, пропускной способностью, общим количеством операций ввода-вывода и т. Д.
Несмотря на то, что это не очень хороший дизайн, я не могу это изменить, поскольку это система клиента. При нагрузочном тестировании было показано, что он может обрабатывать 60 одновременных пользователей, выполняющих операцию LIST. Я склонен думать, что некоторые пользователи пишут в каталог, и это мешает выполнению операций LIST. Мне известны некоторые ошибки ОС, которые делают операции EFS / NFS последовательными, а не параллельными, но при использовании исправленной версии Amazon Linux это не должно быть проблемой, поскольку она полностью обновлена, и эти ошибки не применяются. EFS монтируется согласно настройкам AWS по умолчанию, например. жесткое крепление nfs и т. д.
Что вызывает недоумение, так это то, почему производительность иногда снижается от очень разумной до сканирования без какой-либо заметной разницы в моделях трафика. Я бы не подумал, что операции записи / перемещения на отдельном сервере повесят операции LIST на другом сервере, хотя и в том же каталоге. Это происходит, когда я не перемещаю файлы, но подозреваю, что это происходит из-за того, что некоторые пользователи пишут в каталог.
Будем признательны за любые мысли, если вы уже сталкивались с подобными проблемами NFS раньше.