Ustawianie wygaśnięcia pamięci podręcznej L1 w procesorze

Apigee Edge zapewnia buforowanie na potrzeby trwałości danych między żądaniami. Po otrzymaniu danych z interfejsu API są one przechowywane w pamięci podręcznej przez krótki czas, a następnie usuwane. Maksymalny czas przechowywania danych przed ich usunięciem to czas wygaśnięcia lub czas życia (TTL) pamięci podręcznej. Każda pamięć podręczna ma domyślną wartość TTL, ale w niektórych przypadkach może być konieczna zmiana tej wartości, aby poprawić wydajność interfejsu API.

Typy pamięci podręcznej

Dane interfejsu API są przechowywane w 2 rodzajach pamięci podręcznej:

  • Poziom 1 (L1): pamięć podręczna pamięci RAM, która zapewnia szybszy dostęp, ale ma mniejszą pojemność.
  • Poziom 2 (L2): stała pamięć podręczna w magazynie danych Cassandra, która ma wolniejszy dostęp, ale większą dostępną pojemność.

Gdy wpis danych w pamięci podręcznej L1 osiągnie czas TTL L1, zostanie usunięty. Jednak kopia wpisu jest przechowywana w pamięci podręcznej L2 (która ma dłuższy czas TTL niż pamięć podręczna L1), gdzie pozostaje dostępna dla innych procesorów komunikatów. Więcej informacji o pamięci podręcznej znajdziesz w sekcji Poziomy pamięci podręcznej w pamięci i trwałej.

Maksymalna wartość TTL L1

W Edge dla chmury prywatnej możesz ustawić maksymalny czas TTL pamięci podręcznej L1 dla każdego procesora komunikatów, używając właściwości Max L1 TTL (conf_cache_max.l1.ttl.in.seconds). Wpis w pamięci podręcznej L1 wygaśnie po osiągnięciu wartości Max L1 TTL i zostanie usunięty.

Uwagi:

  • Domyślnie maksymalny czas TTL L1 jest wyłączony (wartość -1). W takim przypadku czas TTL wpisu w pamięci podręcznej L1 jest określany przez ustawienia wygaśnięcia zasady PopulateCache (zarówno w przypadku pamięci podręcznej L1, jak i L2).
  • Maksymalny czas TTL L1 ma zastosowanie tylko wtedy, gdy jego wartość jest mniejsza niż ogólny czas ważności pamięci podręcznej.

Ustawianie maksymalnej wartości TTL L1

Maksymalną wartość TTL L1 możesz ustawić w procesorze komunikatów w ten sposób:

  1. Otwórz plik konfiguracji /opt/apigee/customer/application/message-processor.properties w edytorze. Jeśli plik nie istnieje, utwórz go.
  2. Ustaw właściwość Max L1 TTL na odpowiednią wartość:
    conf_cache_max.l1.ttl.in.seconds = 180

    Zalecamy wartość 180 sekund.

  3. Upewnij się, że plik właściwości należy do użytkownika „apigee”:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. Ponownie uruchom procesor komunikatów:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Wskazówki dotyczące ustawiania maksymalnej wartości TTL L1

Podczas ustawiania maksymalnego czasu TTL L1 pamiętaj o tych wskazówkach:

  • Brakujące zdalne wywołania procedury: jeśli zauważysz brakujące zdalne wywołania procedury (RPC) między procesorami komunikatów (MP) – zwłaszcza w wielu centrach danych – możliwe, że pamięć podręczna L1 zawiera nieaktualne wpisy, które pozostaną nieaktualne, dopóki nie zostaną usunięte z pamięci podręcznej L1. Ustawienie niższej wartości maksymalnego czasu TTL L1 wymusza szybsze usuwanie nieaktualnych wpisów i zastępowanie ich nowymi wartościami z pamięci podręcznej L2.
    Rozwiązanie: zmniejsz wartość conf_cache_max.l1.ttl.in.seconds.
  • Nadmierne obciążenie bazy danych Cassandra: gdy ustawisz wartość maksymalnego czasu życia danych w pamięci podręcznej L1, wpisy w pamięci podręcznej L1 będą wygasać częściej, co doprowadzi do większej liczby nietrafień w pamięci podręcznej L1 i większej liczby trafień w pamięci podręcznej L2. Ponieważ pamięć podręczna L2 będzie częściej używana, Cassandra będzie bardziej obciążona.
    Rozwiązanie: zwiększ conf_cache_max.l1.ttl.in.seconds

Zasadniczo dostosuj maksymalny czas życia L1 do wartości, która równoważy częstotliwość niepowodzeń RPC między procesorami wiadomości z potencjalnym obciążeniem Cassandra.

Zalecamy ustawienie wartości conf_cache_max.l1.ttl.in.seconds na co najmniej 180 sekund (3 minuty), aby przetwarzanie przebiegało bez zakłóceń.