Rozwiązywanie problemów z wydajnością rejestru

Ten artykuł ułatwia rozwiązywanie problemów, które mogą wystąpić z wydajnością rejestru kontenerów platformy Azure.

Objawy

Może zawierać co najmniej jedną z następujących czynności:

  • Ściąganie lub wypychanie obrazów przy użyciu interfejsu wiersza polecenia platformy Docker trwa dłużej niż oczekiwano
  • Wdrażanie obrazów w usłudze, takiej jak Azure Kubernetes Service, trwa dłużej niż oczekiwano
  • Nie można ukończyć dużej liczby współbieżnych operacji ściągania lub wypychania w oczekiwanym czasie
  • Zobaczysz błąd HTTP 429 podobny do Too many requests
  • Operacje ściągania lub wypychania w rejestrze replikowanym geograficznie trwa dłużej niż oczekiwano lub wypychanie kończy się niepowodzeniem z powodu błędu Error writing blob lub Error writing manifest

Przyczyny

  • Szybkość połączenia sieciowego może spowalniać operacje rejestru — rozwiązanie
  • Kompresja lub wyodrębnianie warstwy obrazu może być powolne na kliencie — rozwiązanie
  • Osiągasz skonfigurowany limit w warstwie usługi rejestru lub środowisku — rozwiązanie
  • Rejestr replikowany geograficznie zawiera repliki w pobliskich regionach — rozwiązanie
  • Ściągasz z geograficznie odległej repliki rejestru — rozwiązanie

Jeśli nie rozwiążesz problemu tutaj, zobacz Zaawansowane kroki rozwiązywania problemów i Następne kroki , aby uzyskać inne opcje.

Potencjalne rozwiązania

Sprawdzanie oczekiwanej szybkości sieci

Sprawdź szybkość przekazywania i pobierania z Internetu lub użyj narzędzia, takiego jak AzureSpeed, aby przetestować przekazywanie i pobieranie z usługi Azure Blob Storage, która hostuje warstwy obrazu rejestru.

Sprawdź rozmiar obrazu pod kątem maksymalnego obsługiwanego rozmiaru i obsługiwanej przepustowości pobierania lub przekazywania dla warstwy usługi rejestru. Jeśli rejestr znajduje się w warstwie Podstawowa lub Standardowa, rozważ uaktualnienie w celu zwiększenia wydajności.

W przypadku wdrażania obrazów w innych usługach sprawdź regiony, w których znajduje się rejestr i element docelowy. Rozważ zlokalizowanie rejestru i celu wdrożenia w tych samych regionach lub w pobliżu sieci, aby zwiększyć wydajność.

Powiązane linki:

Sprawdzanie sprzętu klienta

Typ dysku i procesor CPU na kliencie platformy Docker mogą mieć wpływ na szybkość wyodrębniania lub kompresowania warstw obrazu na kliencie w ramach operacji ściągania lub wypychania. Na przykład wyodrębnianie warstw na dysku twardym trwa dłużej niż na dysku półprzewodnikowym. Porównaj operacje ściągania dla porównywalnych obrazów z rejestru kontenerów platformy Azure i rejestru publicznego, takiego jak Docker Hub.

Przejrzyj skonfigurowane limity

Jeśli jednocześnie wypychasz lub ściągasz wiele lub wiele wielowarstwowych obrazów do rejestru, zapoznaj się z obsługiwanymi limitami operacji ReadOps i WriteOps dla warstwy usługi rejestru. Jeśli rejestr znajduje się w warstwie Podstawowa lub Standardowa, rozważ uaktualnienie w celu zwiększenia limitów. Sprawdź również u dostawcy sieci informacje o ograniczaniu przepustowości sieci, które mogą wystąpić w przypadku wielu współbieżnych operacji.

Przejrzyj konfigurację demona platformy Docker pod kątem maksymalnego współbieżnego przekazywania lub pobierania dla każdej operacji wypychania lub ściągania na kliencie. W razie potrzeby skonfiguruj wyższe limity.

Ponieważ każda warstwa obrazu wymaga oddzielnej operacji odczytu lub zapisu rejestru, sprawdź liczbę warstw na obrazach. Rozważ strategie zmniejszenia liczby warstw obrazów.

Powiązane linki:

Konfigurowanie rejestru replikowanego geograficznie

Klient platformy Docker, który wypycha obraz do rejestru replikowanego geograficznie, może nie wypchnąć wszystkich warstw obrazu i manifestu do jednego zreplikowanego regionu. Taka sytuacja może wystąpić, ponieważ usługa Azure Traffic Manager kieruje żądania rejestru do najbliższego zreplikowanego rejestru w sieci. Jeśli rejestr ma dwa regiony replikacji w pobliżu, warstwy obrazu i manifest mogą być dystrybuowane do dwóch lokacji, a operacja wypychania kończy się niepowodzeniem po zweryfikowaniu manifestu.

Aby zoptymalizować rozpoznawanie nazw DNS do najbliższej repliki podczas wypychania obrazów, skonfiguruj rejestr replikowany geograficznie w tych samych regionach świadczenia usługi Azure co źródło operacji wypychania lub najbliższy region podczas pracy poza platformą Azure.

Aby rozwiązać problemy z operacjami w rejestrze replikowanym geograficznie, możesz również tymczasowo wyłączyć routing usługi Traffic Manager do co najmniej jednej replikacji.

Powiązane linki:

Konfigurowanie systemu DNS dla rejestru replikowanego geograficznie

Jeśli operacje ściągania z rejestru replikowanego geograficznie są powolne, konfiguracja DNS na kliencie może być rozpoznawana jako geograficznie odległy serwer DNS. W takim przypadku usługa Traffic Manager może wysyłać żądania do repliki, która znajduje się w pobliżu serwera DNS, ale z dala od klienta. Uruchom narzędzie, takie jak nslookup lub dig (w systemie Linux), aby określić replikę, do którego usługa Traffic Manager kieruje żądania rejestru. Na przykład:

nslookup myregistry.azurecr.io

Potencjalnym rozwiązaniem jest skonfigurowanie bliżej serwera DNS.

Powiązane linki:

Zaawansowane rozwiązywanie problemów

Jeśli uprawnienia do zasobów rejestru są dozwolone, sprawdź kondycję środowiska rejestru. Jeśli zgłaszane są błędy, zapoznaj się z dokumentacją błędów dotyczącą potencjalnych rozwiązań.

Jeśli zbieranie dzienników zasobów jest włączone w rejestrze, zapoznaj się z dziennikiem ContainterRegistryRepositoryEvents. Ten dziennik przechowuje informacje dotyczące operacji, takich jak zdarzenia wypychania lub ściągania. Wykonaj zapytanie w dzienniku pod kątem błędów operacji na poziomie repozytorium.

Powiązane linki:

Następne kroki

Jeśli nie rozwiążesz problemu w tym miejscu, zapoznaj się z następującymi opcjami.