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

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

InvalidQuotaInterval

Komunikat o błędzie

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 przedział limitu określony w elemencie <Interval> zasady dotyczącej limitu nie jest liczbą całkowitą, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Jeśli na przykład przedział czasu limitu określony w elemencie <Interval> zasady dotyczącej limitu wynosi 0, 1, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Określ zasadę limitu, w której wystąpił błąd, oraz nieprawidłowy przedział limitu. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Quota-1, a nieprawidłowy interwał limitu to 0.1:

    Error Saving Revision 1
    Invalid quota interval 0.1 in quota policy Quota-1.
    
  2. Sprawdź, czy wartość interwału limitu określona w zasadach dotyczących limitu, które spowodowały błąd, jest zgodna z wartością podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład te zasady określają wartość interwału limitu jako 0.1, co odpowiada wartości w komunikacie 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 przedział czasu limitu nie jest liczbą całkowitą, to jest to przyczyną błędu.

    W przykładzie zasad dotyczących limitu powyżej wartość przedziału limitu wynosi 0, 1, czyli nie jest liczbą całkowitą. W związku z tym wdrożenie proxy interfejsu API nie powiedzie się i zostanie wyświetlony błąd:

    Invalid quota interval 0.1 in quota policy Quota-1.
    

Rozdzielczość

Upewnij się, że wartość interwału limitu określona w elemencie <Interval> zasady limitu to liczba całkowita. 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 dotyczącej limitu jest nieobsł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 w elemencie <TimeUnit> zasady dotyczące limitu jednostka czasu jest określona jako year, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Określ zasadę limitu, 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> zasad dotyczących limitu zgadza się z jednostką czasu podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład te zasady określają wartość interwału limitu jako year, co odpowiada wartości w komunikacie 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 dotyczących limitów nie jest obsługiwana, to jest to przyczyną błędu.

    W przykładzie zasad dotyczących limitu powyżej jednostka czasu jest określona jako year, co jest nieobsługiwane. W związku z tym wdrożenie proxy interfejsu API nie powiedzie się i zostanie wyświetlony błąd:

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

Rozdzielczość

Sprawdź, czy jednostka czasu określona w elemencie <TimeUnit> zasady dotyczącej limitu 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 <Quota> elemencie zasady dotyczącej limitu jest nieprawidłowy, wdrożenie serwera proxy interfejsu API zakończy się niepowodzeniem.

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 dotyczącej limitu jest nieprawidłowy, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Określ nieprawidłowy typ limitu użyty w zasadach dotyczących limitów. Te informacje znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nieprawidłowy typ zasad to window:

    Error Saving Revision 1
    No enum constant com.apigee.quota.types.QuotaType.window.
    
  2. Sprawdź wszystkie zasady dotyczące limitu w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitu, w której typ limitu określony w elemencie <Quota> pasuje do nieobsługiwanego typu zidentyfikowanego w kroku 1 powyżej, to jest to przyczyna błędu.

    Na przykład te zasady określają typ jako window, co odpowiada temu, co znajduje się w komunikacie 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>
    

    Atrybut type ma wartość window, która nie jest obsługiwana, więc wdrożenie serwera proxy interfejsu API nie powiedzie się i wyświetli się błąd:

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

Rozdzielczość

Sprawdź, czy typ limitu określony przez atrybut type w elemencie <Quota> zasady Quota 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 czasu określony w elemencie <StartTime> zasady dotyczącej limitu jest nieprawidłowy, wdrożenie serwera proxy interfejsu API zakończy się niepowodzeniem.

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

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

Diagnostyka

  1. Znajdź nieprawidłowy czas rozpoczęcia określony w zasadach dotyczących limitu. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym 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 limitu w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitu, w której wartość podana w elemencie <StartTime> odpowiada nieprawidłowemu czasowi rozpoczęcia zidentyfikowanemu w kroku 1 powyżej, to jest to przyczyna błędu.

    Na przykład te zasady określają typ jako 7-16-2017 12:00:00, co odpowiada temu, co znajduje się w komunikacie 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>
    

    Wartość ustawiona dla parametru <StartTime> to 7-16-2017 12:00:00, która nie jest zgodna z wymaganym formatem daty i godziny. Wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetla się błąd:

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

Rozdzielczość

Sprawdź, czy format czasu rozpoczęcia określony w elemencie <StartTime> zasad dotyczących limitu 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 limitu, której typ limitu nie jest typem kalendarzowym, wdrożenie serwera proxy interfejsu API nie powiedzie się.

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

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

Diagnostyka

  1. Określ typ limitu podany w zasadach dotyczących limitów, które spowodowały błąd. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym 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 limitu w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitu, w której określony atrybut typu pasuje do typu limitu zidentyfikowanego w kroku 1 powyżej i określono element <StartTime>, to jest to przyczyna błędu.

    Na przykład te zasady określają typ limitu jako flexi, który pasuje do komunikatu o błędzie, a także 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>
    

    Ponieważ element <StartTime> jest określony w zasadach dotyczących limitów, których typ limitu to flexi, wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem z błędem:

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

Rozdzielczość

Upewnij się, że element <StartTime> nie jest 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 proxy interfejsu API nie powiedzie się. Jednostka czasu second jest nieprawidłowa w przypadku limitu rozproszonego.

Gdy element Distributed ma wartość true, zasada powinna utrzymywać centralny licznik i stale synchronizować go na wszystkich procesorach wiadomości. Dlatego trudno byłoby zsynchronizować i zweryfikować, czy liczba żądań nie przekroczyła określonego limitu w krótkim przedziale czasu, np. w ciągu kilku sekund. Z tego powodu jednostka czasu second jest uważana za nieprawidłową w przypadku limitu rozproszonego.

Diagnostyka

Sprawdź wszystkie zasady dotyczące limitu w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli w zasadach dotyczących limitów znajduje się element <TimeUnit> ustawiony na second, a element <Distributed> jest ustawiony na true, to jest to przyczyną błędu.

Na przykład w zasadach poniżej 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ść

Sprawdź, czy element <TimeUnit> nigdy nie ma wartości second, gdy element <Distributed> ma wartość true. Element <TimeUnit> może mieć dowolną z innych dozwolonych wartości – minute, hour, day, week, lub month. Przykład:

<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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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ść określona dla elementu <SyncIntervalInSeconds> w elemencie <AsynchronousConfiguration> w zasadach dotyczących limitu jest mniejsza od zera, wdrożenie serwera proxy interfejsu API zakończy się niepowodzeniem.

Diagnostyka

Sprawdź wszystkie zasady dotyczące limitu w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli w którejkolwiek zasadzie dotyczącej limitu w elemencie <AsynchronousConfiguration> element <SyncIntervalInSeconds> ma wartość mniejszą od zera, to jest to przyczyną błędu.

Na przykład w zasadach poniżej element <SyncIntervalInSeconds> ma wartość ujemną:

<?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ść

Zawsze podawaj dodatnią liczbę całkowitą w elemencie <SyncIntervalInSeconds> w elemencie <AsynchronousConfiguration> w zasadach dotyczących limitu. 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 zasadach dotyczących limitu, które mają też konfigurację asynchroniczną zdefiniowaną za pomocą elementu <AsynchronousConfiguration>, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

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

Na przykład poniższe zasady mają element <Synchronous> ustawiony na true, a także 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ść

Sprawdź, czy w zasadach dotyczących limitów nie ma zdefiniowanej konfiguracji asynchronicznej za pomocą elementu <AsynchronousConfiguration>, jeśli element <Synchronous> ma wartość true.

Powyższy przykład można poprawić, usuwając sekcję <AsynchronousConfiguration>, jak pokazano poniżej:

<?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>