Prestandajustering och optimeringsmetoder

Serverlösa applikationer med AWS Lambda

Claudio Canales

Senior DevOps Engineer

Prestanda = latens + kostnad

  • Du betalar för tid.
  • Prestandajustering är också kostnadsoptimering.
  • Mät innan du justerar.
  • Ändra en sak i taget.

Stoppur och kostnad

Serverlösa applikationer med AWS Lambda

Vart tiden tar vägen

  • Initiering.
  • Körning av handler.
  • Väntetid för externa anrop.

Init vs handler vs externa anrop

Serverlösa applikationer med AWS Lambda

Kallstart vs varmstart

Kallstart

  • Lambda behöver en ny miljö.

Varmstart

  • Återanvänder en befintlig miljö.
  • Handleren körs med mindre overhead.

Tidslinje för kallstart vs varmstart

Serverlösa applikationer med AWS Lambda

Init-arbete vs handler-arbete

  • Import och global konfiguration körs vid initiering.
  • Tung initiering ger långsammare kallstarter.
  • Initieringstiden visas i mätvärden.

Uppdelning av init och handler

Serverlösa applikationer med AWS Lambda

Återanvänd klienter vid varmstarter

  • Att skapa en klient vid varje anrop upprepar kostnaden.
  • Återanvänd den när miljön är varm.

Global klientåteranvändning

Serverlösa applikationer med AWS Lambda

Kodmönster: klienten utanför handleren

import boto3
sts = boto3.client("sts")
def handler(event, context):
    return sts.get_caller_identity()

Klienten skapas en gång

Serverlösa applikationer med AWS Lambda

Cacha det du kan

  • Behåll data i minnet.
  • Använd /tmp för små temporära filer.
  • Cacha med omdöme och ogiltigförklara vid behov.

Cachning i minnet och /tmp

Serverlösa applikationer med AWS Lambda

Håll beroenden kompakta

  • Stora paket tar längre tid att läsa in.
  • Ta bort det du inte använder.
  • Håll beroenden så kompakta som möjligt.

Snålt vs tungt beroendepaketet

Serverlösa applikationer med AWS Lambda

Logga med omdöme

  • För mycket loggning ökar kostnad och brus.
  • Sikta på korta, strukturerade meddelanden.
  • Håll loggar sökbara för enklare spårning och felsökning.

Loggvolym vs signal

Serverlösa applikationer med AWS Lambda

Minska overhead från externa anrop

  • Anrop till andra tjänster är den långsammaste delen.
  • Minska antalet anrop och batcha arbete när möjligt.
  • Sätt tidsgränser så att fel inte hänger sig.

Minimera externa anrop

Serverlösa applikationer med AWS Lambda

Minnet påverkar också CPU

  • CPU skalas med minnet.
  • CPU-bunden kod kan slutföras snabbare.
  • Mer minne kan minska körtid eller kostnad.
  • Testa för att hitta det bästa värdet.

Minne -> CPU -> snabbare körtid

Serverlösa applikationer med AWS Lambda

Hitta den optimala kostnadspunkten

  • Den bästa minnesinställningen minimerar totalkostnaden.
  • Kurvan sjunker och planar sedan ut eller stiger.
  • Testa om igen efter ändringar.

Kostnad vs minneskurva

Serverlösa applikationer med AWS Lambda

Mät med CloudWatch

  • Spåra Duration och Init duration.
  • Spåra fel och begränsningar.
  • Följ svanslatenser (p95, p99).

Prestandamätvärden i CloudWatch

Serverlösa applikationer med AWS Lambda

Minska kallstarter

  • Minska vad som körs vid initiering.
  • Håll paketet kompakt.
  • Återanvänd kostsam konfiguration.
  • Överväg provisionerade miljöer.

Checklista för att minska kallstarter

Serverlösa applikationer med AWS Lambda

Viktiga slutsatser

  • Ha koll på vart tiden tar vägen.
  • Återanvänd klienter och cacha med omdöme.
  • Minnet påverkar CPU och körtid.
  • Mät varje förändring.

Viktiga slutsatser om prestanda

Serverlösa applikationer med AWS Lambda

Nu kör vi en övning!

Serverlösa applikationer med AWS Lambda

Preparing Video For Download...