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:
-
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.
- 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.
- 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" }
- 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
- 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.
- Sprawdź, czy procesor komunikatów może połączyć się z każdym węzłem Cassandra na porcie 9042
oraz 9160:
- Jeśli usługa telnet jest dostępna, użyj polecenia telnet:
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- 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
- 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.
- Jeśli usługa telnet jest dostępna, użyj polecenia telnet:
- 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
- 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
- Jeśli problem nie ustąpi, skontaktuj się z zespołem ds. operacji sieciowych.
- 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ąć.
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
- 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:
grep
„shutdown
”/opt/apigee/var/log/apigee-cassandra/system.log
Rozdzielczość
- Sprawdź, czy system Cassandra jest uruchomiony i działa prawidłowo.
- 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.
- 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ń”.
- 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.
- 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.
- (Opcjonalnie) Wykonaj ponowne uruchomienie kroczące w procesorach wiadomości, aby mieć pewność, że połączenie jest .
- 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.
- 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.
- 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. - 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
- 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.
- 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:
- Utwórz następujący plik, jeśli nie istnieje:
/opt/apigee/customer/application/cassandra.properties
- 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>
- Uruchom ponownie Cassandra:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 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.