Устранение проблем с производительностью реестра

Эта статья поможет вам устранить проблемы, которые могут возникнуть при работе реестра контейнеров Azure.

Симптомы

Признаки могут выражаться следующим образом.

  • Вытягивание или отправка образов с помощью Docker CLI занимает больше времени, чем ожидалось
  • Развертывание образов в такой службе, как Служба Azure Kubernetes, занимает больше времени, чем ожидалось
  • Вы не можете выполнить большое количество одновременных операций pull или push за ожидаемое время
  • Появляется сообщение об ошибке HTTP 429, подобное Too many requests
  • Операции извлечения или отправки в геореплицируемом реестре занимают больше времени, чем ожидалось, или отправка завершается с ошибкой Error writing blob или Error writing manifest

Причины

  • Скорость вашего сетевого подключения может замедлить работу реестра — решение
  • Сжатие или извлечение слоя изображения может быть медленным на клиенте — решение
  • Вы достигли настроенного лимита на уровне службы реестра или в среде — решение
  • Реплики вашего геореплицированного реестра есть в близлежащих регионах — решение
  • Вы извлекаете реплику из географически удаленного реестра — решение

Если вы не решите проблему здесь, см. Диагностика проблем повышенной сложности и Следующие шаги.

Возможные решения

Проверьте ожидаемую скорость сети

Проверьте скорость загрузки и скачивания через Интернет или используйте такой инструмент, как AzureSpeed, для тестирования загрузки и скачивания из хранилища BLOB-объектов Azure, в котором размещены слои образов реестра.

Сравните размер вашего образа с максимальным поддерживаемым размером и поддерживаемой пропускной способностью загрузки или выгрузки для вашего уровня службы реестра. Если ваш реестр находится на уровне "Базовый" или "Стандартный", рассмотрите возможность обновления для повышения производительности.

Для развертывания образа в других службах проверьте регионы, в которых расположены реестр и целевой объект. Для повышения производительности рассмотрите возможность размещения реестра и целевого объекта развертывания в одном регионе или регионах, близких к сети.

Связанные ссылки

Проверить клиентское оборудование

Тип диска и ЦП на клиенте докера могут влиять на скорость извлечения или сжатия слоев изображения на клиенте в рамках операций извлечения или извлечения. Например, извлечение слоя на жестком диске займет больше времени, чем на твердотельном диске. Сравните операции извлечения для сопоставимых образов из реестра контейнеров Azure и общедоступного реестра, например Docker Hub.

Просмотрите настроенные ограничения

Если вы одновременно загружаете или загружаете несколько или много многоуровневых образов в реестр, просмотрите поддерживаемые ограничения ReadOps и WriteOps для уровня службы реестра. Если ваш реестр находится на уровне "Базовый" или "Стандартный", рассмотрите возможность обновления, чтобы увеличить лимиты. Также узнайте у своего сетевого провайдера об ограничении сети, которое может происходить при большом количестве одновременных операций.

Проверьте конфигурацию демона Docker на предмет максимального количества одновременных загрузок или загрузок для каждой операции push или pull на клиенте. При необходимости настройте более высокие пределы.

Поскольку для каждого слоя изображения требуется отдельная операция чтения или записи в реестр, проверьте количество слоев в изображениях. Рассмотрите стратегии уменьшения количества слоев изображения.

Связанные ссылки

Настроить геореплицируемый реестр

Клиент Docker, который отправляет образ в геореплицируемый реестр, может не перемещать все слои образа и его манифест в одну реплицированную область. Эта ситуация может возникнуть из-за того, что диспетчер трафика Azure направляет запросы реестра в ближайший к сети реплицированный реестр. Если вблизи реестра находятся два региона репликации, то слои образа и манифест могут быть распределены между ними, а операция отправки завершится ошибкой при проверке манифеста.

Чтобы для разрешения DNS-имен при передаче образов использовалась ближайшая реплика, настройте геореплицированный реестр в том же регионе Azure, где находится источник операций отправки, или в ближайшем регионе при работе вне Azure.

Для устранения неполадок операций с геореплицированным реестром вы также можете временно отключить маршрутизацию диспетчера трафика к одной или нескольким репликациям.

Связанные ссылки

Настроить DNS для геореплицируемого реестра

Если операции извлечения из геореплицируемого реестра кажутся медленными, конфигурация DNS на клиенте может разрешить географически удаленный DNS-сервер. В этом случае диспетчер трафика может направлять запросы на реплику, которая находится в сети, близкой к DNS-серверу, но удаленной от клиента. Запустите такой инструмент, как nslookup или dig (в Linux), чтобы определить реплику, на которую диспетчер трафика направляет запросы реестра. Например:

nslookup myregistry.azurecr.io

Возможное решение — настроить более близкий DNS-сервер.

Связанные ссылки

Расширенный поиск проблем

Если ваши разрешения на ресурсы реестра позволяют, проверьте работоспособность среды реестра. Если сообщается об ошибках, просмотрите справочник по ошибкам для поиска возможных решений.

Если в реестре включена коллекция журналов ресурсов, просмотрите журнал ContainterRegistryRepositoryEvents. В этом журнале хранится информация о таких операциях, как события push или pull. Запросите журнал на предмет сбоев операций на уровне репозитория.

Связанные ссылки

Следующие шаги

Если проблема не решена, воспользуйтесь следующими вариантами.