Rozwiązywanie problemów z wdrażaniem zasady limitów

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

InvalidQuotaInterval

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
Invalid quota interval [interval] in quota policy [policy_name].

Przykładowy komunikat o błędzie

Error Saving Revision 1
Invalid quota interval 0.1 in quota policy Quota-1.

Przykładowy zrzut ekranu

Przyczyna

Jeśli odstęp limitu określony w elemencie <Interval> zasady limitów nie jest liczbą całkowitą, wdrożenie serwera proxy interfejsu API się nie uda.

Jeśli na przykład interwał limitu wynosi 0, 1 w elemencie <Interval> zasad limitów, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Zidentyfikuj zasadę dotyczącą limitów, w której wystąpił błąd, oraz nieprawidłowy interwał limitu. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Quota-1, a nieprawidłowy odstęp czasu limitu to 0.1:

    Error Saving Revision 1
    Invalid quota interval 0.1 in quota policy Quota-1.
    
  2. Sprawdź, czy wartość przedziału czasu określonego w nieudanej zasadzie dotyczącej limitów jest zgodna z wartością podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa wartość przedziału limitu wynoszącą 0.1, która jest zgodna z treścią komunikatu o błędzie:

    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
     <DisplayName>Quota-1</DisplayName>
     <Properties />
     <Allow count="3" />
     <Interval>0.1</Interval>
     <TimeUnit>minute</TimeUnit>
    </Quota>
    
  3. Jeśli podany odstęp czasu nie jest liczbą całkowitą, jest to przyczyna błędu.

    W przedstawionej powyżej przykładowej zasadzie dotyczącej limitów wartość odstępu między limitami wynosi 0,1 i nie jest liczbą całkowitą. Dlatego wdrożenie serwera proxy interfejsu API nie powiedzie się z błędem:

    Invalid quota interval 0.1 in quota policy Quota-1.
    

Rozdzielczość

Upewnij się, że wartość odstępu czasu określonego w elemencie <Interval> zasad dotyczących limitów jest liczbą całkowitą. Na przykład:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
</Quota>

InvalidQuotaTimeUnit

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
Invalid quota interval time unit [time_unit] in quota policy
[policy_name] in Revision [revision_number] of application
[proxy_name], in organization [org_name].

Przykładowy komunikat o błędzie

Error Saving Revision 1
Invalid quota interval time unit year in quota policy Quota-1 in Revision 1 of application Quota_test, in organization aprabhashankar-eval.

Przykładowy zrzut ekranu

Przyczyna

Jeśli jednostka czasu określona w elemencie <TimeUnit> zasady limitu nie jest obsługiwana, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Obsługiwane jednostki czasu to minute, hour, day, week i month.

Jeśli na przykład jednostka czasu jest określona jako year w elemencie <TimeUnit> w zasadach limitów, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

  1. Określ zasadę dotyczącą limitów, w której wystąpił błąd, oraz nieprawidłową jednostkę czasu. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Quota-1, a nieprawidłowa jednostka czasu to year:

    Invalid quota interval time unit year in quota policy Quota-1
    in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    
  2. Sprawdź, czy jednostka czasu określona w elemencie <TimeUnit> zasady dotyczącej limitów jest zgodna z jednostką czasu podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa wartość przedziału limitu wynoszącą year, która jest zgodna z treścią komunikatu o błędzie:

    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
     <DisplayName>Quota-1</DisplayName>
     <Properties />
     <Allow count="3" />
     <Interval>1</Interval>
     <TimeUnit>year</TimeUnit>
    </Quota>
    
  3. Jeśli jednostka czasu określona w zasadach limitów nie jest obsługiwana, jest to przyczyna błędu.

    W przedstawionej powyżej przykładowej zasadzie dotyczącej limitu jednostka czasu jest określona jako year, która nie jest obsługiwana. Dlatego wdrożenie serwera proxy interfejsu API nie powiedzie się z błędem:

    Invalid quota interval time unit year in quota policy Quota-1 in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    

Rozdzielczość

Upewnij się, że jednostka czasu określona w elemencie <TimeUnit> zasady dotyczącej limitów jest obsługiwana. Na przykład:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>month</TimeUnit>
</Quota>

InvalidQuotaType

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
No enum constant com.apigee.quota.types.QuotaType.[type].

Przykładowy komunikat o błędzie

Error Saving Revision 1
No enum constant com.apigee.quota.types.QuotaType.window.

Przykładowy zrzut ekranu

Przyczyna

Jeśli typ limitu określony przez atrybut type w elemencie <Quota> zasady Limity jest nieprawidłowy, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Obsługiwane typy limitów to default, calendar, flexi i rollingwindow.

Jeśli na przykład typ zasady określony jako window w elemencie <Quota> zasady limitu się nie uda, nie uda się wdrożyć serwera proxy interfejsu API.

Diagnostyka

  1. Określ nieprawidłowy typ limitu używany w zasadach dotyczących limitów. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie w przypadku tego błędu nieprawidłowy typ zasady to window:

    Error Saving Revision 1
    No enum constant com.apigee.quota.types.QuotaType.window.
    
  2. Sprawdź wszystkie zasady dotyczące limitów na serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje jakaś zasada dotycząca limitu, w której typ limitu określony w elemencie <Quota> jest zgodny z nieobsługiwanym typem zidentyfikowanym w kroku 1 powyżej, to jest przyczyną błędu.

    Na przykład ta zasada określa typ jako window, co jest zgodne z treścią komunikatu o błędzie:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="window">
        <DisplayName>Quota-1</DisplayName>
        <Properties/>
        <Allow count="3"/>
        <Interval>1</Interval>
        <TimeUnit>minute</TimeUnit>
        <StartTime>2017-7-16 12:00:00</StartTime>
        <MessageWeight ref="messageWeight"/>
    </Quota>
    

    Ponieważ atrybut typu jest ustawiony jako window, co nie jest obsługiwane, wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i występuje błąd:

    No enum constant com.apigee.quota.types.QuotaType.window.
    

Rozdzielczość

Upewnij się, że typ limitu określony przez atrybut type w elemencie <Quota> zasady dotyczącej limitów jest obsługiwany. Na przykład:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="rollingwindow">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <MessageWeight ref="messageWeight"/>
</Quota>

InvalidStartTime

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
Invalid Starttime:[start_time]; Start Time should be of the format yyyy-MM-dd HH:mm:ss.

Przykładowy komunikat o błędzie

Error Saving Revision 1
Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.

Przykładowy zrzut ekranu

Przyczyna

Jeśli format godziny określony w elemencie <StartTime> zasady limitu jest nieprawidłowy, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Prawidłowy format to yyyy-MM-dd HH:mm:ss, czyli format daty i godziny zgodny z normą ISO 8601.

Jeśli na przykład czas określony w elemencie <StartTime> zasady limitu to 7-16-2017 12:00:00, nie uda się wdrożyć serwera proxy interfejsu API.

Diagnostyka

  1. Określ nieprawidłowy czas rozpoczęcia określony w zasadach dotyczących limitów. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie w poniższym błędzie nieprawidłowy czas rozpoczęcia to 7-16-2017 12:00:00

    Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.
    
  2. Sprawdź wszystkie zasady dotyczące limitów na serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje jakaś zasada dotycząca limitów, w której wartość określona w elemencie <StartTime> jest zgodna z nieprawidłowym czasem rozpoczęcia określonym w kroku 1 powyżej, to jest przyczyną błędu.

    Na przykład ta zasada określa typ jako 7-16-2017 12:00:00, co jest zgodne z treścią komunikatu o błędzie:

    <?xml version="1.0" encoding="UTF-8"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="calendar">
       <DisplayName>Quota-1</DisplayName>
       <Properties />
       <Allow count="3" />
       <Interval>1</Interval>
       <TimeUnit>minute</TimeUnit>
       <StartTime>7-16-2017 12:00:00</StartTime>
    </Quota>
    

    Ponieważ wartość ustawiona dla <StartTime> jest ustawiona jako 7-16-2017 12:00:00, co nie jest zgodne z wymaganym formatem daty i godziny, wdrożenie serwera proxy interfejsu API kończy się błędem:

    Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.
    

Rozdzielczość

Upewnij się, że format czasu rozpoczęcia określony w elemencie <StartTime> zasad dotyczących limitów jest prawidłowy zgodnie z wymaganym formatem yyyy-MM-dd HH:mm:ss. Na przykład:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="calendar">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
</Quota>

StartTimeNotSupported

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision_number]
Starttime is not supported for quotatype [quota_type]. Starttime is supported only for calendar based type.

Przykładowy komunikat o błędzie

Error Saving Revision 1
Starttime is not supported for quotatype flexi. Starttime is supported only for calendar based type.

Przykładowy zrzut ekranu

Przyczyna

Jeśli element <StartTime> jest określony w zasadzie dotyczącej limitów, której typ limitu nie jest typem kalendarza, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Element <StartTime> jest obsługiwany tylko w przypadku limitu typu calendar.

Jeśli na przykład atrybut type jest ustawiony na flexi lub rolling window w elemencie <Quota> zasady limitu, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Określ typ limitu określony w nieudanej zasadzie dotyczącej limitów. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie w poniższym błędzie nieprawidłowy czas rozpoczęcia to flexi

    Starttime is not supported for quotatype flexi. Starttime is
    supported only for calendar based type.
    
  2. Sprawdź wszystkie zasady dotyczące limitów na serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje jakaś zasada dotycząca limitów, w której podany atrybut typu jest zgodny z typem limitu określonym w kroku 1 powyżej i jest określony element <StartTime>, to jest przyczyną błędu.

    Na przykład ta zasada określa typ limitu w postaci flexi, który jest zgodny z treścią komunikatu o błędzie i określa element <StartTime>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="flexi">
        <DisplayName>Quota-1</DisplayName>
        <Properties/>
        <Allow count="3"/>
        <Interval>1</Interval>
        <TimeUnit>minute</TimeUnit>
        <StartTime>2017-7-16 12:00:00</StartTime>
    </Quota>
    

    Element <StartTime> jest określony w zasadzie limitów, której typ limitu jest określony jako flexi, więc wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem:

    Starttime is not supported for quotatype flexi. Starttime is supported only for calendar based type.
    

Rozdzielczość

Dopilnuj, aby element <StartTime> nie był określony, gdy typ limitu określony przez atrybut type w elemencie <Quota> to flexi lub rolling window. Na przykład:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="flexi">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
</Quota>

InvalidTimeUnitForDistributedQuota

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision number]
Invalid timeunit second for distributed quota.

Przykładowy komunikat o błędzie

Error Saving Revision 1
Invalid timeunit second for distributed quota.

Przykładowy zrzut ekranu

Przyczyna

Jeśli element <Distributed> ma wartość true, a element <TimeUnit> ma wartość second, wdrożenie serwera proxy interfejsu API nie powiedzie się. Jednostka czasu second jest nieprawidłowa dla limitu rozproszonego.

Gdy element Distributed ma wartość true, zasada powinna utrzymywać centralny licznik i stale synchronizować go między wszystkimi procesorami wiadomości. W związku z tym trudno byłoby zsynchronizować dane, a także sprawdzić, czy liczba żądań nie przekroczyła określonego limitu w krótkim przedziale czasu, np. w sekundach. Z tego powodu jednostka czasu second jest uznawana za nieprawidłową w ramach limitu rozproszonego.

Diagnostyka

Sprawdź wszystkie zasady dotyczące limitów na serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitu z elementem <TimeUnit> ustawionym na second, a element <Distributed> ma wartość true, to jest przyczyną błędu.

Na przykład w poniższej zasadzie element <TimeUnit> ma wartość second, a element <Distributed> ma wartość true.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
    <DisplayName>CheckQuota</DisplayName>
    <Properties/>
    <Allow count="30"/>
    <Interval>1</Interval>
    <TimeUnit>second</TimeUnit>
    <StartTime>2018-8-05 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
</Quota>

Rozdzielczość

Upewnij się, że element <TimeUnit> nigdy nie ma wartości second, gdy element <Distributed> ma wartość Prawda. Elementowi <TimeUnit> można ustawić dowolną z pozostałych dozwolonych wartości – minute, hour, day, week,lubmonth, np.:

<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
    <DisplayName>CheckQuota</DisplayName>
    <Properties/>
    <Allow count="30"/>
    <Interval>1</Interval>
    <TimeUnit>hour</TimeUnit>
    <StartTime>2018-8-05 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
</Quota>

InvalidSynchronizeIntervalForAsyncConfiguration

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision number]
SyncIntervalInSeconds should be a value greater than zero.

Przykładowy komunikat o błędzie

Error Saving Revision 1
SyncIntervalInSeconds should be a value greater than zero.

Przykładowy zrzut ekranu

Przyczyna

Jeśli wartość elementu <SyncIntervalInSeconds> w elemencie <AsynchronousConfiguration> w zasadzie limitu jest mniejsza niż 0, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

Sprawdź wszystkie zasady dotyczące limitów na serwerze proxy interfejsu API, w którym wystąpił błąd. Jest to przyczyna błędu, jeśli istnieje jakaś zasada dotycząca limitu, w której element <SyncIntervalInSeconds> ma w elemencie <AsynchronousConfiguration> wartość mniejszą niż 0.

Na przykład w poniższej zasadzie dla elementu <SyncIntervalInSeconds> określona jest wartość ujemna:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
    <AsynchronousConfiguration>
        <SyncIntervalInSeconds>-1</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

Rozdzielczość

Pamiętaj, aby w zasadach dotyczących limitu zawsze podawać dodatnią liczbę całkowitą dla elementu <SyncIntervalInSeconds> w elemencie <AsynchronousConfiguration>. Na przykład:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
    <AsynchronousConfiguration>
        <SyncIntervalInSeconds>5</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

InvalidAsynchronizeConfigurationForSynchronousQuota

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

Error Saving Revision [revision number]
AsynchronousConfiguration is not valid for synchronous quota.

Przykładowy komunikat o błędzie

Error Saving Revision 2
AsynchronousConfiguration is not valid for synchronous quota.

Przykładowy zrzut ekranu

Przyczyna

Jeśli wartość elementu <Synchronous> jest ustawiona na true w zasadzie limitu, która ma również konfigurację asynchroniczną zdefiniowaną za pomocą elementu <AsynchronousConfiguration>, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

Sprawdź wszystkie zasady dotyczące limitów na serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje jakaś zasada limitu, w której element <Synchronous> ma wartość true, a także ma zdefiniowany element <AsynchronousConfiguration>, to jest przyczyną błędu.

Na przykład poniższa zasada ma element <Synchronous>, który jest ustawiony jako true i ma też zdefiniowany element <AsynchronousConfiguration>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>true</Synchronous>
    <AsynchronousConfiguration>
     <SyncIntervalInSeconds>1</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

Rozdzielczość

Jeśli element <Synchronous> ma w zasadzie limitu wartość true, upewnij się, że nie zdefiniowano konfiguracji asynchronicznej przy użyciu elementu <AsynchronousConfiguration>.

Powyższy przykład można poprawić, usuwając sekcję <AsynchronousConfiguration> w podany niżej sposób:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
 <Synchronous>true</Synchronous>
</Quota>