Podczas uzyskiwania dostępu do Datastore wystąpił błąd

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Krótki opis problemu

Wdrożenie wersji serwera proxy interfejsu API za pomocą interfejsu Edge lub wywołania interfejsu Edge Management API zakończy się niepowodzeniem z błąd "Error while accessing datastore".

Komunikaty o błędach

Error in deployment for environment qa.

The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later

Możliwe przyczyny

Oto typowe przyczyny:

  1. Przyczyna Szczegóły Dla:
    Problem z połączeniem sieciowym między procesorami wiadomości a systemem Cassandra Błąd komunikacji między procesorem wiadomości a Cassandra z powodu sieci problemów z połączeniem lub reguł zapory sieciowej. Użytkownicy Edge Private Cloud
    Błędy wdrażania spowodowane przez Cassandra ponowne uruchomienia Węzły Cassandra były niedostępne, ponieważ zostały uruchomione ponownie w ramach rutyny i prac konserwacyjnych. Użytkownicy Edge Private Cloud
    Zwiększenie czasu oczekiwania na żądanie odczytu w systemie Cassandra Jeśli węzły Cassandra wykonują dużą liczbę równoczesnych odczytów, może odpowiadać wolno z powodu nagłego zwiększenia czasu oczekiwania na żądanie odczytu. Użytkownicy Edge Private Cloud
    Pakiet serwerów proxy interfejsów API przekracza 15 MB Oprogramowanie Cassandra zostało skonfigurowane tak, aby nie zezwalać na pakiety proxy interfejsów API większe niż 15 MB rozmiaru. Użytkownicy Edge Private Cloud

    Problem z połączeniem sieciowym między wiadomościami Procesor i Cassandra

    Diagnostyka

    Uwaga: tylko użytkownicy Edge Private Cloud mogą wykonywać poniższe czynności. Jeśli używasz Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.

    1. Wycofaj wdrożenie i wdróż ponownie serwer proxy interfejsu API. Jeśli wystąpił tymczasowy problem z połączeniem między procesorem wiadomości a Cassandra, błąd może zniknąć.

      OSTRZEŻENIE: nie wycofuj wdrożenia, jeśli błędy występują w wersji produkcyjnej dla środowiska.

    2. Jeśli problem będzie się powtarzał, wykonaj poniższe wywołanie AP zarządzania, aby sprawdzić stanu wdrożenia i sprawdź, czy nie ma błędów w komponentach:
      curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments

      Przykładowe dane wyjściowe stanu wdrożenia pokazujące błąd podczas uzyskiwania dostępu do magazynu danych na jednym czy procesory wiadomości

      {
      "environment" : [ {
      "aPIProxy" : [ {
      "name" : "simple-python",
      "revision" : [ {
      "configuration" : {
      "basePath" : "/",
      "steps" : [ ]
      },
      "name" : "1",
      "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "2acdd9b2-17de-4fbb-8827-8a2d4f3d7ada"
      }, {
      "error" : "Error while accessing datastore;Please retry later",
      "errorCode" : "datastore.ErrorWhileAccessingDataStore",
      "status" : "error",
      "type" : [ "message-processor" ],
      "uUID" : "42772085-ca67-49bf-a9f1-c04f2dc1fce3"
      } 
      "state" : "error"
      } 
    3. Ponownie uruchom procesory wiadomości, które wyświetlają błąd wdrożenia. Jeśli było tymczasowy problem z siecią, powinien zniknąć:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    4. Powtórz krok 2, aby sprawdzić, czy wdrożenie zostało przeprowadzone na procesorze wiadomości Zrestartowano. Jeśli nie znaleziono żadnych błędów, oznacza to, że problem został rozwiązany.
    5. Sprawdź, czy procesor komunikatów może połączyć się z każdym węzłem Cassandra na porcie 9042 oraz 9160:
      1. Jeśli usługa telnet jest dostępna, użyj polecenia telnet:
        telnet <Cassandra_IP> 9042
        telnet <Cassandra_IP> 9160
      2. Jeśli usługa Telnet jest niedostępna, użyj narzędzia netcat, aby sprawdzić łączność w następujący sposób:
        nc -vz <Cassandra_IP> 9042
        nc -vz <Cassandra_IP> 9160
      3. Jeśli pojawi się komunikat „Odmowa połączenia” lub „Osiągnięto limit czasu połączenia”, a następnie zaangażuj zespołu ds. operacji sieciowych.
    6. Jeśli problem będzie się powtarzał, sprawdź, czy każdy z węzłów Cassandra nasłuchuje na porty 9042 i 9160:
      netstat -an | grep LISTEN | grep 9042
      netstat -an | grep LISTEN | grep 9160
    7. Jeśli węzły Cassandra nie nasłuchują na porcie 9042 lub 9160, ponownie uruchom konkretne węzły Cassandra:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
    8. Jeśli problem nie ustąpi, skontaktuj się z zespołem ds. operacji sieciowych.

Rozdzielczość

Skontaktuj się ze swoim zespołem ds. operacji sieciowych i rozwiąż problem z połączeniem sieci między procesor komunikatów i Cassandra.

Błędy wdrażania spowodowane ponownym uruchomieniami systemu Cassandra

Węzły Cassandra są zwykle okresowo uruchamiane ponownie w ramach rutynowej konserwacji. Jeśli API serwery proxy są wdrażane podczas prac konserwacyjnych przy Cassandra, wdrożenia kończą się niepowodzeniem z powodu niedostępności magazynu danych Cassandra.

Uwaga: tylko użytkownicy Edge Private Cloud mogą wykonywać poniższe czynności. Jeśli korzystają z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.

Diagnostyka

  1. Sprawdź, czy węzły Cassandra zostały uruchomione ponownie podczas wdrożenia.Może to być W tym celu sprawdź dziennik Cassandra lub najnowsze dzienniki czasu uruchamiania węzła Cassandra:

    grepshutdown/opt/apigee/var/log/apigee-cassandra/system.log

Rozdzielczość

  1. Sprawdź, czy system Cassandra jest uruchomiony i działa prawidłowo.
  2. Sprawdź, czy procesory wiadomości mogą połączyć się z magazynem danych Cassandra na porcie 9042 i 9160.

Zwiększenie czasu oczekiwania na żądanie odczytu w systemie Cassandra

Duża liczba odczytów w systemie Cassandra zależy od indywidualnych przypadków użycia i wzorców ruchu na serwerach proxy zawierających zasady wymagające uprawnień do odczytu z Cassandra.

Jeśli na przykład dla zasad OAuth wywołanie metody GET do typu uwierzytelnienia zasad OAuth jest wywoływane dla typu uwierzytelnienia zasad OAuth, token odświeżania jest powiązany z wieloma tokenami dostępu, może to skutkować dużą liczbą czytanych przez Cassandrę. Może to zwiększyć czas oczekiwania na żądanie odczytu w systemie Cassandra.

Diagnostyka

Uwaga: tylko użytkownicy Edge Private Cloud mogą wykonywać poniższe czynności. Jeśli korzystają z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.

  1. Jeśli masz zainstalowany panel monitorowania wersji beta, spójrz na pulpit nawigacyjny Cassandra. i przejrzeć sekcję „Prośby o przeczytanie” wykresu okresu, w którym wystąpił problem. Przejrzyj też wykres „Przeczytane” Opóźnienia żądań”.
  2. Dodatkowym narzędziem do sprawdzania żądań odczytu i opóźnień odczytu jest polecenie nodetool cfstats. Zobacz Cassandra dokumentacji, aby dowiedzieć się więcej o korzystaniu z tego polecenia.

Rozdzielczość

Uwaga: tylko użytkownicy Edge Private Cloud mogą wykonywać poniższe czynności. Jeśli korzystają z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.

  1. Spróbuj wdrożyć wdrożenie ponownie, gdy wydajność systemu Cassandra wróci do normalnej wydajności. Upewnij się, że Dzwonek Cassandra działa normalnie.
  2. (Opcjonalnie) Wykonaj ponowne uruchomienie kroczące w procesorach wiadomości, aby mieć pewność, że połączenie jest .
  3. W przypadku długoterminowego rozwiązania sprawdź wzorce ruchu przez interfejsy API, które mogłyby się przyczynić odczytów w magazynie danych Cassandra. Skontaktuj się z zespołem pomocy Apigee Edge, aby uzyskać pomoc w rozwiązaniu tego problemu.
  4. Jeśli istniejące węzły Cassandra nie są wystarczające do obsługi ruchu przychodzącego, albo zwiększyć pojemność sprzętową lub liczbę węzłów magazynu danych Cassandra, w odpowiedni sposób.

Interfejs API Pakiet serwerów proxy jest większy niż 15 MB

W przypadku systemu Cassandra rozmiar pakietów serwerów proxy interfejsów API jest ograniczony do 15 MB. Rozmiar interfejsu API pakiet proxy ma więcej niż 15 MB, zostanie wyświetlony komunikat „Błąd podczas uzyskiwania dostępu do magazynu danych” gdy spróbuje wdrożyć serwer proxy interfejsu API.

Diagnostyka

Uwaga: tylko użytkownicy Edge Private Cloud mogą wykonywać poniższe czynności. Jeśli korzystają z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.

  1. Sprawdzanie logów procesora wiadomości (/opt/apigee/var/log/edge-message-processor/logs/system.log) i sprawdź, czy podczas wdrażania określonego serwera proxy interfejsu API wystąpiły błędy.
  2. Jeśli zobaczysz błąd podobny do pokazanego na ilustracji poniżej, oznacza to, że wystąpił błąd wdrożenia jest to, że rozmiar pakietu serwera proxy API to > 15 MB.
    2016-03-23 18:42:18,517 main ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.fetchDynamicCompositeColumns() : Error while querying columnfamily : [api_proxy_revisions_r21, adevegowdat@v1-node-js] for rowkey:{}
    com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=None(0.0.0.0):0, latency=159(486), attempts=3]org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-1.56.43.jar:na]
            at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-1.56.43.jar:na]
    ...<snipped>
            Caused by: org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)!
            at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.1.jar:0.9.1]
            at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.9.1.jar:0.9.1]
    ...<snipped>

Rozdzielczość

Jeśli istnieje zbyt wiele plików zasobów, pakiet serwera proxy interfejsu API będzie duży. Użyj następujących rozwiązania tego problemu:

Rozwiązanie 1. Przenieś pliki zasobów na poziom środowiska lub organizacji

  1. Przenoszenie dowolnych plików zasobów, takich jak pliki i moduły NodeJS Script, pliki JavaScript, Pliki JAR na poziomie środowiska lub organizacji. Więcej informacji o plikach zasobów znajdziesz w tych artykułach: znajdziesz w dokumentacji Edge.
  2. Wdróż serwer proxy interfejsu API i sprawdź, czy błąd zniknie.

Jeśli problem nie ustępuje albo nie możesz przenieść plików zasobów do środowiska lub organizacji z jakiegoś powodu, a potem zastosuj rozwiązanie nr 2.

Rozwiązanie 2. Zwiększ rozmiar pakietu serwera proxy API w systemie Cassandra

Uwaga: tylko użytkownicy Edge Private Cloud mogą wykonywać poniższe czynności. Jeśli korzystają z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.

Wykonaj te czynności, aby zwiększyć rozmiar ramki używany w usłudze Cassandra rozmiar transportu, który kontroluje maksymalny rozmiar pakietu proxy API dozwolony w Brzeg:

  1. Utwórz następujący plik, jeśli nie istnieje:
    /opt/apigee/customer/application/cassandra.properties
  2. Dodaj do pliku następujący wiersz, zastępując <size> z ustawieniami rozmiaru wymaganymi dla duży pakiet:
    conf_cassandra_thrift_framed_transport_size_in_mb=<size>
  3. Uruchom ponownie Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  4. Powtórz kroki od 1 do 3 we wszystkich węzłach Cassandra w klastrze.

Jeśli problem będzie nadal występował, skontaktuj się z zespołem pomocy Apigee Edge.