Beheben von Problemen mit der Registrierungsleistung

Dieser Artikel hilft Ihnen bei der Behebung von Problemen, die bei der Leistung einer Azure Container Registry auftreten können.

Symptome

Mindestens eines der folgenden Probleme kann ein Symptom sein:

  • Das Pullen oder Pushen von Images mit der DockerCLI dauern länger als erwartet.
  • Die Bereitstellung von Images in einem Dienst wie Azure Kubernetes Service dauert länger als erwartet.
  • Sie können eine große Anzahl von gleichzeitigen Pull- oder Pushvorgängen nicht in der erwarteten Zeit abschließen.
  • Möglicherweise wird ein HTTP 429-Fehler ähnlich dem folgenden angezeigt: Too many requests
  • Pull- oder Pushvorgänge in einer georeplizierten Registrierung dauern länger als erwartet, oder ein Push schlägt mit dem Fehler Error writing blob oder Error writing manifest fehl.

Ursachen

  • Die Netzwerkverbindungsgeschwindigkeit kann Registrierungsvorgänge verlangsamen: Lösung.
  • Die Komprimierung oder Extraktion der Imageschicht ist möglicherweise auf dem Client langsam: Lösung.
  • Sie erreichen ein konfiguriertes Limit in der Registrierungsdienstebene oder der Umgebung: Lösung.
  • Ihre georeplizierte Registrierung verfügt über Replikate in Regionen in der Nähe: Lösung.
  • Sie pullen aus einem geografisch entfernten Registrierungsreplikat: Lösung.

Wenn Sie Ihr Problem hier nicht beheben können, finden Sie weitere Informationen unter Erweiterte Problembehandlung und Nächste Schritte.

Mögliche Lösungen

Überprüfen der erwarteten Netzwerkgeschwindigkeit

Überprüfen Sie die Internetupload- und -downloadgeschwindigkeit, oder verwenden Sie ein Tool wie AzureSpeed, um den Upload und Download aus Azure Blob Storage zu testen, der Registrierungsimageebenen hostet.

Überprüfen Sie die Imagegröße im Hinblick auf die maximal unterstützte Größe und die unterstützte Download- oder Uploadbandbreite für die Registrierungsdienstebene. Wenn sich Ihre Registrierung im Basic- oder Standard-Tarif befindet, sollten Sie ein Upgrade in Erwägung ziehen, um die Leistung zu verbessern.

Überprüfen Sie für die Imagebereitstellung für andere Dienste die Regionen, in denen sich die Registrierung und das Ziel befinden. Es empfiehlt sich, die Registrierung und das Bereitstellungsziel in derselben Region oder in netzwerknahen Regionen zu platzieren, um die Leistung zu verbessern.

Verwandte Links:

Überprüfen der Clienthardware

Der Datenträgertyp und die CPU auf dem Docker-Client können sich auf die Geschwindigkeit auswirken, mit der Imageebenen auf dem Client als Teil von Pull- oder Pushvorgängen extrahiert oder komprimiert werden. Die Ebenenextraktion auf einem Festplattenlaufwerk nimmt z. B. mehr Zeit in Anspruch als auf einem Festkörperlaufwerk. Vergleichen Sie Pullvorgänge für vergleichbare Images aus Ihrer Azure Container Registry und einer öffentlichen Registrierung, z. B. aus Docker Hub.

Überprüfen konfigurierter Einstellungen

Wenn Sie gleichzeitig mehrere oder zahlreiche mehrschichtige Images aus Ihrer Registrierung pushen oder in sie pullen, überprüfen Sie die unterstützten ReadOps- und WriteOps-Grenzwerte für die Registrierungsdienstebene. Wenn sich Ihre Registrierung im Basic- oder Standard-Tarif befindet, sollten Sie ein Upgrade in Erwägung ziehen, um diese Grenzwerte zu erhöhen. Informieren Sie sich auch bei Ihrem Netzwerkanbieter über Netzwerkdrosselung, die bei vielen gleichzeitigen Vorgängen auftreten kann.

Überprüfen Sie die Konfiguration des Docker-Daemons auf die maximale Anzahl gleichzeitiger Uploads oder Downloads für jeden Push- oder Pullvorgang auf dem Client. Konfigurieren Sie bei Bedarf höhere Grenzwerte.

Da jede Bildebene einen separaten Registrierungslese- oder -schreibvorgang erfordert, überprüfen Sie die Anzahl der Ebenen in Ihren Images. Erwägen Sie Strategien zur Verringerung der Anzahl der Imageebenen.

Verwandte Links:

Konfigurieren einer georeplizierten Registrierung

Ein Docker-Client, der ein Image in eine georeplizierte Registrierung pusht, pusht möglicherweise nicht alle Imageebenen und das Manifest in eine einzige replizierte Region. Dies kann der Fall sein, wenn Azure Traffic Manager Registrierungsanforderungen an die dem Netzwerk nächstgelegene replizierte Registrierung weiterleitet. Wenn sich die Registrierung in der Nähe von zwei Replikationsregionen befindet, können Imageebenen und das Manifest an die beiden Standorte verteilt werden, und der Pushvorgang schlägt beim Überprüfen des Manifests fehl.

Um die DNS-Auflösung beim Pushen von Images auf das nächstgelegene Replikat zu optimieren, konfigurieren Sie eine georeplizierte Registrierung in denselben Azure-Regionen wie die Quelle der Pushvorgänge oder die nächstgelegene Region, wenn Sie außerhalb von Azure arbeiten.

Zur Problembehandlung von Vorgängen mit einer georeplizierten Registrierung können Sie das Traffic Manager-Routing für mindestens eine Replikation vorrübergehend deaktivieren.

Verwandte Links:

Konfigurieren von DNS für eine georeplizierte Registrierung

Wenn Pullvorgänge aus einer georeplizierten Registrierung langsam erscheinen, wird die DNS-Konfiguration auf dem Client möglicherweise zu einem geografisch entfernten DNS-Server aufgelöst. In diesem Fall leitet Traffic Manager Anforderungen ggf. an ein Replikat weiter, das sich im Netzwerk in der Nähe des DNS-Servers befindet, aber weit vom Client entfernt ist. Führen Sie ein Tool wie nslookup oder dig (unter Linux) aus, um das Replikat zu ermitteln, an das Traffic Manager die Registrierungsanforderungen weiterleitet. Beispiel:

nslookup myregistry.azurecr.io

Eine mögliche Lösung besteht darin, einen näheren DNS-Server zu konfigurieren.

Verwandte Links:

Erweiterte Problembehandlung

Wenn Ihre Berechtigungen für Registrierungsressourcen dies zulassen, überprüfen Sie die Integrität der Registrierungsumgebung. Wenn Fehler gemeldet werden, überprüfen Sie die Fehlerreferenz auf mögliche Lösungen.

Wenn Sammlung von Ressourcenprotokollen in der Registrierung aktiviert ist, überprüfen Sie das Protokoll „ContainterRegistryRepositoryEvents“. Dieses Protokoll speichert Informationen zu Vorgängen wie Push- oder Pullereignissen. Fragen Sie das Protokoll auf Vorgangsfehler auf Repositoryebene ab.

Verwandte Links:

Nächste Schritte

Wenn Sie Ihr Problem hier nicht lösen können, sehen Sie sich die folgenden Optionen an.