Wyświetlasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
InvalidMessageWeight
Kod błędu
policies.ratelimit.InvalidMessageWeight
Treść odpowiedzi na błąd
{ "fault": {jdoe "faultstring": "Invalid message weight value [invalid_value]", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
Przykładowy komunikat o błędzie
{ "fault": { "faultstring": "Invalid message weight value 1.5", "detail": { "errorcode": "policies.ratelimit.InvalidMessageWeight" } } }
Przyczyna
Ten błąd występuje, jeśli wartość określona dla elementu <MessageWeight>
przez
zmienna przepływu jest nieprawidłowa (wartość nie jest liczbą całkowitą).
Jeśli na przykład wartość zmiennej przepływu określonej dla parametru <MessageWeight>
to 1,5 (wartość nie jest całkowita), występuje błąd.
Diagnostyka
Znajdź nieprawidłową wartość używaną w elemencie
<MessageWeight>
w zwiększeniu Zasady aresztowania. Te informacje znajdziesz w elemenciefaultstring
w odpowiedź na żądanie błędu. Na przykład w tym błędzie: nieprawidłowa wartość użyta jako Element<MessageWeight>
jest1.5
:"faultstring": "Invalid message weight value 1.5"
Sprawdź wszystkie zasady Spike Arrest na konkretnym serwerze proxy API, gdzie wartość wystąpił błąd. Może istnieć co najmniej 1 zasada Spike Arrest, w której podano element
<MessageWeight>
.Na przykład ta zasada określa wartość
<MessageWeight>
za pomocą zmiennej przepływu o nazwiemessage_weight:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate>100ps</Rate> <MessageWeight ref="message_weight"/> </SpikeArrest>
Ustal wartość zmiennej używanej w elemencie
<MessageWeight>
funkcji określonych zasad dotyczących aresztowania gwałtownego wzrostu. Wartość zmiennej przepływu może być wyodrębniona z nagłówków HTTP, parametrów zapytania, ładunku żądania XML lub JSON albo zdefiniowana w innej zasadzie.- Znajdź kod w obrębie serwera proxy interfejsu API, w którym najpierw zdefiniowano zmienną.
- Gdy już ustalisz, w której zasadzie zmienna jest zdefiniowana i uzupełniana jako pierwsza, sprawdź, jak jest ustawiana jej wartość.
- Jeśli wartość zmiennej przepływu jest zgodna z wartością określoną w kroku 1 powyżej, to jest przyczyną błędu.
Załóżmy na przykład, że przed regułą Spike Arrest używana jest zasada JavaScript Zasada ustawiania zmiennej
message_weight
na podstawie metody żądania jako poniżej:var verb = context.getVariable("request.verb"); context.setVariable("message_weight", "1.5"); if (verb == 'POST') { context.setVariable("message_weight", "2"); }
Zwróć uwagę, że wartość zmiennej
message_weight
to1.5
, która jest nieprawidłowa (nie całkowita) wartość.
Rozdzielczość
Sprawdź, czy wartość elementu MessageWeight
jest prawidłową wartością (całkowitą)
).
Aby poprawić przykład powyżej, możesz zmienić wartość zmiennej
message_weight
w JavaScripcie, aby być liczbą całkowitą:
var verb = context.getVariable("request.verb");
context.setVariable("message_weight", "1");
if (verb == 'POST') {
context.setVariable("message_weight", "2");
}
FailedToResolveSpikeArrestRate
Kod błędu
policies.ratelimit.FailedToResolveSpikeArrestRate
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference [reference] in SpikeArrest policy [api_policy]", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
Przykładowy komunikat o błędzie
{ "fault": { "faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy", "detail": { "errorcode": "policies.ratelimit.FailedToResolveSpikeArrestRate" } } }
Przyczyna
Ten błąd występuje, jeśli odniesienia do zmiennej zawierającej ustawienie stawki w elemencie <Rate>
nie można przekształcić w wartość w zasadach Spike Arrest. Ten element jest obowiązkowy i służy do określenia współczynnika zatrzymania szczytowego w postaci {int}pm
lub {int}ps
. Na przykład {int}pm
może mieć wartość 500pm
,
czyli 500 wywołań na minutę. Podobnie wartość 10ps
oznacza 10 wywołań na
sekunda.
Diagnostyka
Wskaż zasadę, w której wystąpił błąd, oraz podaj nazwę tej zasady którego nie można poprawnie rozwiązać. Oba te produkty znajdziesz w elemencie faultstring odpowiedzi na błąd.
Na przykład w tym ciągu błędów nazwa zasady to
SpikeArrest_AuthProxy
, a plik referencyjny torequest.header.rate
:"faultstring": "Failed to resolve Spike Arrest Rate reference request.header.rate in SpikeArrest policy SpikeArrest_AuthProxy"
W pliku XML zasad Spike Arrest, które nie działają, sprawdź, czy nazwa odwołania jest zgodna z nazwą odwołania wskazaną w ciągu błędu (krok 1 powyżej). **.
Na przykład ta zasada ustawia element
z odwołaniem o nazwie request.header.rate
, która odpowiada temu, co jest w ciągu znaków błędu:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArrest_AuthProxy"> <DisplayName>SpikeArrest_AuthProxy</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <Rate ref="request.header.rate"/> </SpikeArrest>
Określ, czy zmienna jest zdefiniowana i dostępna w procesie, w którym Trwa wykonywanie zasad dotyczących zatrzymania gwałtownego wzrostu.
Jeśli zmienna jest:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest tworzona zasada) wykonano) lub
- nie można rozwiązać (nie jest zdefiniowany)
to właśnie jest przyczyną błędu.
W przykładzie powyżej wartość gwałtownego wzrostu liczby aresztowań w kraju
<Rate>
element powinien być pobierany z nagłówka żądania o nazwie rate. Edge nie może jednak przetworzyć żądania request.header.rate. Dzieje się tak jeśli stawka nagłówka nie jest przekazywana w żądaniu do interfejsu API.Oto przykładowe żądanie do interfejsu API, które nie przekazuje rate nagłówka w ramach żądanie:
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json"
Ponieważ stawka nagłówka nie jest przekazywana w żądaniu, odwołanie Parametr request.header.rate używany w elemencie
<Rate>
powyższego wzrostu Zasada aresztowania jest niezdefiniowana, dlatego nie można rozwiązać tego problemu. W związku z tym otrzymasz kod błędu:policies.ratelimit.FailedToResolveSpikeArrestRate
Rozdzielczość
Sprawdź, czy zmienna, do której odwołuje się element <Rate>
, istnieje lub jest zdefiniowana
i dostępne w ramach konkretnego procesu, w którym realizowana jest zasada „gwałtownego zatrzymania”.
Aby poprawić przykład powyżej, możesz zmodyfikować żądanie, tak aby zawierało nagłówek rate, jak pokazano poniżej:
curl -v http://jdoe-eval-test.apigee.net/check_spikearrest -H "Content-Type: application/json" -H "rate:30ps"