Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Krótki opis problemu
Wdrożenie wersji proxy interfejsu API za pomocą interfejsu Edge lub wywołania interfejsu API zarządzania Edge nie powiodło się z powodu błędu "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
Typowe przyczyny tego problemu:
-
Przyczyna Szczegóły Dotyczy Problem z połączeniem sieciowym między procesorem wiadomości a systemem Cassandra Błąd komunikacji między procesorem wiadomości a systemem Cassandra z powodu problemów z połączeniem sieciowym lub reguł zapory. Użytkowników Edge Private Cloud Błędy wdrożenia spowodowane ponownym uruchomieniem systemu Cassandra Węzły Cassandra były niedostępne, ponieważ zostały ponownie uruchomione w ramach rutynowej konserwacji. Użytkowników Edge Private Cloud Nagły wzrost opóźnienia żądania odczytu w systemie Cassandra Jeśli węzły Cassandra wykonują dużą liczbę jednoczesnych odczytów, mogą odpowiadać powoli z powodu nagłego wzrostu opóźnienia żądania odczytu. Użytkowników Edge Private Cloud Pakiet serwera proxy interfejsu API większy niż 15 MB System Cassandra został skonfigurowany tak, aby nie zezwalać na pakiety serwera proxy interfejsu API o rozmiarze większym niż 15 MB w rozmiarze. Użytkowników Edge Private Cloud Problem z połączeniem sieciowym między procesorem wiadomości a systemem Cassandra
Diagnostyka
Uwaga: te czynności mogą wykonać tylko użytkownicy Edge Private Cloud. Jeśli korzystasz z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.
- Cofnij wdrożenie serwera proxy interfejsu API i wdróż go ponownie. Jeśli wystąpił tymczasowy problem z połączeniem
między procesorem wiadomości a systemem Cassandra, błąd może zniknąć.
OSTRZEŻENIE: nie cofaj wdrożenia, jeśli błędy występują w środowisku produkcyjnym.
- Jeśli problem nadal występuje, wykonaj poniższe wywołanie interfejsu Management API, aby sprawdzić
stan wdrożenia i sprawdzić, czy w którymś z komponentów występują błędy:
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 w jednym z procesorów 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" }
- Uruchom ponownie procesory wiadomości, które wyświetlają błąd wdrożenia. Jeśli wystąpił
tymczasowy problem z siecią, błąd powinien zniknąć:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Powtórz krok 2, aby sprawdzić, czy wdrożenie się powiodło w procesorze wiadomości, który został ponownie uruchomiony. Jeśli nie znaleziono żadnych błędów, oznacza to, że problem został rozwiązany.
- Sprawdź, czy procesor wiadomości może połączyć się z każdym węzłem Cassandra na portach 9042
i 9160:
- Jeśli telnet jest dostępny, użyj telnetu:
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- Jeśli telnet nie jest dostępny, użyj netcat, aby sprawdzić połączenie w ten sposób:
nc -vz <Cassandra_IP> 9042 nc -vz <Cassandra_IP> 9160
- Jeśli otrzymasz odpowiedź „Connection Refused” (Odmowa połączenia) lub „Connection timed out” (Przekroczono limit czasu połączenia), skontaktuj się z zespołem ds. operacji sieciowych.
- Jeśli telnet jest dostępny, użyj telnetu:
- Jeśli problem nadal występuje, sprawdź, czy każdy z węzłów Cassandra nasłuchuje na
portach 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 portach 9042 ani 9160, uruchom ponownie odpowiednie węzły Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Jeśli problem nadal występuje, skontaktuj się z zespołem ds. operacji sieciowych.
- Cofnij wdrożenie serwera proxy interfejsu API i wdróż go ponownie. Jeśli wystąpił tymczasowy problem z połączeniem
między procesorem wiadomości a systemem Cassandra, błąd może zniknąć.
Rozdzielczość
Skontaktuj się z zespołem ds. operacji sieciowych i poproś o rozwiązanie problemu z połączeniem sieciowym między procesorem wiadomości a systemem Cassandra.
Błędy wdrożenia spowodowane ponownym uruchomieniem systemu Cassandra
Węzły Cassandra są zwykle okresowo ponownie uruchamiane w ramach rutynowej konserwacji. Jeśli serwery proxy interfejsu API są wdrażane podczas prac konserwacyjnych w systemie Cassandra, wdrożenia nie powiodą się z powodu braku dostępu do magazynu danych Cassandra.
Uwaga: te czynności mogą wykonać tylko użytkownicy Edge Private Cloud. Jeśli korzystasz z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.
Diagnostyka
- Sprawdź, czy węzły Cassandra zostały ponownie uruchomione w czasie wdrożenia.Możesz to
zrobić, sprawdzając logi Cassandra lub najnowsze logi czasu uruchomienia węzła Cassandra:
grep"shutdown"/opt/apigee/var/log/apigee-cassandra/system.log
Rozdzielczość
- Sprawdź, czy system Cassandra działa.
- Sprawdź, czy procesory wiadomości mogą połączyć się z magazynem danych Cassandra na portach 9042 i 9160.
Nagły wzrost opóźnienia żądania odczytu w systemie Cassandra
Duża liczba odczytów w systemie Cassandra zależy od indywidualnych przypadków użycia i wzorców ruchu w serwerach proxy, które zawierają zasady wymagające dostępu do odczytu z systemu Cassandra.
Jeśli na przykład wywołanie GET typu grant_type refresh_token jest wywoływane w przypadku zasad OAuth, a token odświeżania jest powiązany z wieloma tokenami dostępu, może to spowodować dużą liczbę odczytów z systemu Cassandra. Może to spowodować wzrost opóźnienia żądania odczytu w systemie Cassandra.
Diagnostyka
Uwaga: te czynności mogą wykonać tylko użytkownicy Edge Private Cloud. Jeśli korzystasz z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.

- Jeśli masz zainstalowany panel Beta Monitoring, sprawdź panel Cassandra i wykres "Read Requests" (Żądania odczytu) za okres, w którym wystąpił problem. Sprawdź też wykres „Read Request Latencies” (Opóźnienia żądań odczytu).
- Alternatywnym narzędziem do sprawdzania żądań odczytu i opóźnień odczytu jest polecenie
nodetool cfstats. Więcej informacji o używaniu tego polecenia znajdziesz w dokumentacji Cassandra.
Rozdzielczość
Uwaga: te czynności mogą wykonać tylko użytkownicy Edge Private Cloud. Jeśli korzystasz z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.
- Spróbuj ponownie wdrożyć, gdy wydajność systemu Cassandra wróci do normy. Upewnij się, że cały pierścień Cassandra działa prawidłowo.
- Opcjonalnie: uruchom ponownie procesory wiadomości, aby upewnić się, że połączenie zostało nawiązane.
- Aby znaleźć rozwiązanie długoterminowe, sprawdź wzorce ruchu interfejsu API, które mogą przyczyniać się do większej liczby odczytów w magazynie danych Cassandra. Aby uzyskać pomoc w rozwiązaniu tego problemu, skontaktuj się z zespołem pomocy Apigee Edge.
- Jeśli dotychczasowe węzły Cassandra nie są wystarczające do obsługi ruchu przychodzącego, to zwiększ odpowiednio pojemność sprzętu lub liczbę węzłów magazynu danych Cassandra.
Pakiet serwera proxy interfejsu API większy niż 15 MB
Rozmiar pakietów serwera proxy interfejsu API jest ograniczony do 15 MB w systemie Cassandra. Jeśli rozmiar pakietu serwera proxy interfejsu API jest większy niż 15 MB, podczas próby wdrożenia serwera proxy interfejsu API pojawi się błąd „Error while accessing datastore” (Błąd podczas uzyskiwania dostępu do magazynu danych) .
Diagnostyka
Uwaga: te czynności mogą wykonać tylko użytkownicy Edge Private Cloud. Jeśli korzystasz z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.
- Sprawdź logi procesora wiadomości
(
/opt/apigee/var/log/edge-message-processor/logs/system.log) i zobacz, czy podczas wdrażania konkretnego serwera proxy interfejsu API wystąpiły jakieś błędy. - Jeśli widzisz błąd podobny do tego, który jest widoczny na ilustracji poniżej, oznacza to, że błąd wdrożenia
jest spowodowany tym, że rozmiar pakietu serwera proxy interfejsu API jest większy niż 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ść
Pakiet serwera proxy interfejsu API będzie duży, jeśli będzie zawierać zbyt wiele plików zasobów. Aby rozwiązać ten problem, wykonaj te czynności:
Rozwiązanie 1. Przenieś pliki zasobów na poziom środowiska lub organizacji
- Przenieś dowolne pliki zasobów, takie jak pliki i moduły skryptów NodeJS, pliki JavaScript, pliki JAR, na poziom środowiska lub organizacji. Więcej informacji o plikach zasobów znajdziesz w dokumentacji Edge.
- Wdróż serwer proxy interfejsu API i sprawdź, czy błąd zniknął.
Jeśli problem nadal występuje lub z jakiegoś powodu nie możesz przenieść plików zasobów na poziom środowiska lub organizacji, zastosuj rozwiązanie 2.
Rozwiązanie 2. Zwiększ rozmiar pakietu serwera proxy interfejsu API w systemie Cassandra
Uwaga: te czynności mogą wykonać tylko użytkownicy Edge Private Cloud. Jeśli korzystasz z Edge Public Cloud, skontaktuj się z zespołem pomocy Apigee Edge.
Aby zwiększyć rozmiar właściwości Cassandra thrift frame transport size, która określa maksymalny rozmiar pakietu serwera proxy interfejsu API dozwolony w Edge, wykonaj te czynności:
- Jeśli ten plik nie istnieje, utwórz go:
/opt/apigee/customer/application/cassandra.properties
- Dodaj do pliku ten wiersz, zastępując <size> rozmiarem wymaganym w przypadku
dużego pakietu:
conf_cassandra_thrift_framed_transport_size_in_mb=<size>
- Uruchom ponownie system 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 nadal występuje, skontaktuj się z zespołem pomocy Apigee Edge.