Насколько производительна общая смонтированная файловая система EFS, если существует несколько экземпляров ec2 с несколькими контейнерами, все записывающие в отдельные файлы в разных каталогах? На производительность записи в один контейнер может отрицательно повлиять запись в другой контейнер (на том же или другом узле).
Записи обычно очень малы (~ kbs) и могут увеличиваться до миллисекундной частоты.
Это зависит конечно :)
Amazon рекомендует масштабировать вашу рабочую нагрузку на несколько инстансов EC2 для повышения совокупной пропускной способности. С другой стороны, запись кучи маленьких файлов требует гораздо больших затрат, чем запись того же количества данных в один большой двоичный объект. Проверять, выписываться Советы по производительности Amazon EFS Больше подробностей.
Также обратите внимание, что фактический пропускная способность вашего тома EFS зависит от объема хранимых данных. Чем больше вы храните, тем выше пропускная способность. Если вам нужна высокая пропускная способность даже при небольшом объеме данных, вы можете заплатить за Предоставленная пропускная способность.
Наконец, производительность можно улучшить с помощью Кеширование NFS - можно попробовать включить fsc или fs-cache или какой-либо другой механизм кэширования NFS, который будет объединять записи локально и записывать их пакетно большими кусками.
В конце концов вам придется ориентир как ваше приложение / кластер k8s работает под реальной нагрузкой.
Кстати, вам действительно нужно хранить файлы в NFS? Есть ли лучший способ спроектировать ваше приложение? Возможно, вы могли бы отправить данные со своих модулей K8S через Kinesis или SQS в «микросервис консолидации», который может собирать несколько и хранить их в больших частях? Может быть, до S3, а не даже до EFS? Или делать все, что нужно для обработки, даже не сохраняя их в первую очередь?
Хранение миллиардов крошечных файлов по отдельности вряд ли может обеспечить высокую производительность. Я бы сначала серьезно посмотрел на другие варианты.
Надеюсь, это поможет :)