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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

InvalidQuotaInterval

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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 interwał 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 w elemencie <Interval> zasady limitów wynosi 0, 1, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

  1. Wskaż zasadę dotyczącą limitów, w której wystąpił błąd, oraz określ nieprawidłowy odstęp limitu. Te informacje 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ślonego w nieudanych zasadach dotyczących 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ść odstępu limitu jako 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 interwał limitu nie jest liczbą całkowitą, to jest przyczyną błędu.

    W przykładowej zasadzie limitów widocznej powyżej wartość odstępu limitu to 0, 1, co nie jest liczbą całkowitą. W związku z tym wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetla się błąd:

    Invalid quota interval 0.1 in quota policy Quota-1.
    

Rozdzielczość

Sprawdź, czy wartość odstępu limitu określonego w elemencie <Interval> zasady 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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 limitów nie jest obsługiwana, wdrożenie serwera proxy interfejsu API się nie uda.

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> zasady dotyczącej limitów, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

  1. Wskaż zasadę dotyczącą limitów, w której wystąpił błąd, oraz wskaż nieprawidłową jednostkę czasu. Te informacje 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ść odstępu limitu jako year, co jest zgodne 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 zasadzie dotyczącej limitów nie jest obsługiwana, to jest przyczyną błędu.

    W przykładowej zasadzie dotyczącej limitu widocznej powyżej jednostka czasu jest określona jako year. co nie jest obsługiwane. W związku z tym wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetla się 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 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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 type limitu określonego przez atrybut type w <Quota> element zasady dotyczącej limitów jest nieprawidłowy, wdrożenie serwera proxy interfejsu API się nie uda.

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

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

Diagnostyka

  1. Znajdź nieprawidłowy typ limitu używany w zasadzie dotyczącej limitów. Znajdziesz to informacje zawarte w komunikacie o błędzie. Na przykład w tym błędzie 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 konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitów, w której typ limitu określony w elemencie <Quota> pasuje do nieobsługiwanego typu określonego w kroku 1 powyżej, to to jest przyczyną błędu.

    Na przykład ta zasada określa typ jako window, który jest zgodny 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>
    

    Jako że atrybut typu ma wartość window, która nie jest obsługiwana, wdrożenie serwera proxy interfejsu API nie powiedzie się i pojawi się 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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 dotyczącej limitów jest nieprawidłowy, wdrożenie serwera proxy interfejsu API się nie uda.

Prawidłowy format to yyyy-MM-dd HH:mm:ss. Jest to format daty i godziny w standardzie ISO 8601.

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

Diagnostyka

  1. Znajdź nieprawidłowy czas rozpoczęcia określony w zasadzie dotyczącej limitów. Te informacje znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nieprawidłowa godzina 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 konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitów, w której wartość podana w elemencie <StartTime> pasuje do nieprawidłowego czasu rozpoczęcia określonego w kroku 1 powyżej, to właśnie jest przyczyną błędu.

    Na przykład ta zasada określa typ jako 7-16-2017 12:00:00, który jest zgodny 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>
    

    Jako wartość parametru <StartTime> ustawiona jest wartość 7-16-2017 12:00:00, która nie ma wymaganego formatu daty/godziny, wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i pojawia 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 godziny rozpoczęcia określony w elemencie <StartTime> zasady dotyczącej 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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 limitów, której typem limitu nie jest typ kalendarza, nie uda się wdrożyć serwera proxy interfejsu API.

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

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

Diagnostyka

  1. Zidentyfikuj typ limitu określony w błędnej zasadzie dotyczącej limitów. Te informacje znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nieprawidłowa godzina 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 konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitów, w której określony atrybut typu pasuje do typu limitu określonego w kroku 1 powyżej i określony jest element <StartTime>, to właśnie jest przyczyną błędu.

    Na przykład ta zasada określa typ limitu jako flexi, który jest zgodny z informacją 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, dlatego wdrożenie serwera proxy interfejsu API kończy się 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 w atrybucie 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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 się nie uda. Jednostka czasu second jest nieprawidłowa dla rozproszonego limitu.

Gdy element Distributed ma wartość true, zasada powinna utrzymywać centralny licznik i stale synchronizować go przez wszystkie procesory wiadomości. W związku z tym trudno byłoby przeprowadzić synchronizację i sprawdzić, czy liczba żądań nie przekroczyła określonego limitu w krótkim czasie, np. w sekundach. Z tego powodu jednostka czasu second jest uznawana za nieprawidłową w przypadku limitu rozproszonego.

Diagnostyka

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

Na przykład w poniższej zasadzie element <TimeUnit> jest ustawiony na 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. Element <TimeUnit> może mieć dowolną z pozostałych dozwolonych wartości – minute, hour, day, week,lubmonth. Na 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

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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 zasadzie limitów jest mniejsza niż 0, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

Sprawdź wszystkie zasady dotyczące limitów na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. Jeśli istnieje zasada dotycząca limitów, w której element <SyncIntervalInSeconds> w elemencie <AsynchronousConfiguration> ma wartość mniejszą od 0, to właśnie jest przyczyną błędu.

Na przykład ta zasada ma wartość ujemną określoną dla elementu <SyncIntervalInSeconds>:

<?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 zawsze określać dodatnią liczbę całkowitą dla elementu <SyncIntervalInSeconds> w elemencie <AsynchronousConfiguration> w zasadach dotyczących limitów. 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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 limitów, która ma również konfigurację asynchroniczną zdefiniowaną za pomocą elementu <AsynchronousConfiguration>, wdrożenie serwera proxy interfejsu API się nie uda.

Diagnostyka

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

Na przykład ta zasada zawiera element <Synchronous> ustawiony na true i 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 elemencie <AsynchronousConfiguration> nie ma zdefiniowanej konfiguracji asynchronicznej, jeśli element <Synchronous> ma wartość true w zasadzie limitów.

W przykładzie powyżej można poprawić, usuwając sekcję <AsynchronousConfiguration> w następujący 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>