WebSockets og realtidssystemer med Spring · Lektion

Benchmarking af WebSocket-ydeevne

Lær værktøjer og teknikker til at benchmarke ydeevnen og skalerbarheden af Deres WebSocket-server.

Lektion 1 af 411 trin

Benchmarking af WebSocket-ydeevne er en gratis WebSockets og realtidssystemer med Spring-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i WebSockets og realtidssystemer med Spring, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. WebSockets og realtidssystemer med Spring-kurset indeholder 4 lektioner i alt.

Hvad er benchmarking?

Når vi bygger realtidsapplikationer med WebSockets, ønsker vi, at de er hurtige og pålidelige. Men hvordan ved vi, om de er det?

Benchmarking fungerer som en belastningstest af din applikation. Det hjælper dig med at måle dens ydeevne under forskellige belastninger og identificere mulige flaskehalse.

  • Det handler om data, ikke bare fornemmelser.
  • Det hjælper med at bekræfte skalerbarhed.
  • Det afslører ydeevnegrænser.

Hvorfor benchmarke WebSockets?

WebSockets er designet til kommunikation med lav latenstid og høj gennemstrømning. Benchmarking sikrer, at din implementering lever op til dette løfte, især når antallet af brugere vokser.

Uden benchmarking kan du opleve:

  • Langsom levering af beskeder (høj latenstid)
  • Forbindelser, der afbrydes
  • Servernedbrud under belastning
  • En dårlig brugeroplevelse

Det hjælper dig med at forberede dig på brug i den virkelige verden.

Vigtige WebSocket-målepunkter

For at benchmarke effektivt skal vi fokusere på bestemte målepunkter. De fortæller os, hvor godt vores WebSocket-server fungerer.

De vigtigste omfatter:

  • Latenstid: Hvor hurtigt beskeder bevæger sig.
  • Gennemstrømning: Hvor mange beskeder der behandles pr. sekund.
  • Samtidige forbindelser: Hvor mange brugere der kan oprette forbindelse på én gang.
  • Fejlrate: Procentdelen af mislykkede handlinger.

Forstå latenstid

Latenstid er den tid, det tager for en besked at bevæge sig fra afsenderen til modtageren og tilbage igen (Round-Trip Time eller RTT).

For WebSockets er lav latenstid afgørende. Høj latenstid betyder, at brugerne oplever forsinkelser, så følelsen af realtid forsvinder.

Vi måler den ofte i millisekunder (ms).

Forstå gennemstrømning

Gennemstrømning henviser til den mængde data eller det antal beskeder, der kan behandles og leveres i løbet af en periode, normalt pr. sekund.

For en chatapplikation er det, hvor mange beskeder serveren kan håndtere pr. sekund. For en aktiekursvisning er det, hvor mange opdateringer den kan sende.

Høj gennemstrømning er afgørende for travle applikationer.

Værktøjer til benchmarking

Du behøver ikke bygge komplekse værktøjer fra bunden. Der findes flere effektive muligheder:

  • k6: Et moderne, scriptbart værktøj til belastningstest, der understøtter WebSockets.
  • Apache JMeter: Et populært open source-værktøj til ydeevnetest, herunder WebSocket-protokoller.
  • Brugerdefinerede scripts: Til meget specifikke behov kan du skrive din egen klient med Node.js, Python eller Java.

Eksempel på måling af latenstid

Her er en enkel Java-klient, der viser, hvordan du måler Round-Trip Time (RTT) for en WebSocket-besked ved hjælp af en offentlig ekko-server.

Vi sender et 'Ping', registrerer tidspunktet og beregner derefter varigheden, når 'Ping' sendes tilbage.

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.util.concurrent.CompletionStage;

public class SimpleLatencyTest {

  private static final String WS_URL = "ws://echo.websocket.org";

  public static void main(String[] args) {
    System.out.println("Benchmarking client starting...");

    HttpClient client = HttpClient.newHttpClient();
    WebSocket ws = client.newWebSocketBuilder()
      .buildAsync(URI.create(WS_URL), new WebSocket.Listener() {
        private long sendTime;

        @Override
        public void onOpen(WebSocket webSocket) {
          System.out.println("Connected to " + WS_URL);
          webSocket.sendText("Ping", true);
          sendTime = System.nanoTime();
        }

        @Override
        public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
          if ("Ping".contentEquals(data)) {
            long latencyMs = (System.nanoTime() - sendTime) / 1_000_000;
            System.out.println("Echo received! Latency: " + latencyMs + "ms");
            webSocket.sendClose(WebSocket.NORMAL_CLOSURE, "Done").join();
          }
          return null;
        }

        @Override
        public void onError(WebSocket webSocket, Throwable error) {
          System.err.println("Error: " + error.getMessage());
        }
      }).join();

    System.out.println("Benchmarking client finished.");
  }
}

Simulering af mange klienter

En enkelt klient giver ikke et fuldstændigt billede. Benchmarking-værktøjer er fremragende til at simulere hundredvis eller tusindvis af samtidige WebSocket-forbindelser.

Det er afgørende, fordi serverens ydeevne kan blive betydeligt dårligere, når mange klienter opretter forbindelse og sender beskeder samtidig.

  • Hver simuleret klient fungerer som en rigtig bruger.
  • Værktøjerne håndterer oprettelse og nedlukning af forbindelser.
  • De indsamler samlede målepunkter på tværs af alle klienter.

Fortolkning af resultater

Når du har kørt dine benchmarks, får du en masse data. Se ikke kun på gennemsnittene!

  • Se efter afvigende værdier: Pludselige stigninger i svartid eller fejl.
  • Observer tendenser: Forringes ydeevnen lineært eller eksponentielt, når der kommer flere brugere?
  • Fastlæg baselineværdier: Sammenlign nye resultater med tidligere benchmarks for at følge forbedringer eller forringelser.

Disse data hjælper dig med at træffe velovervejede beslutninger om optimering.

Hurtigt tjek af målepunkter

Lad os tjekke din forståelse af de vigtigste målepunkter for WebSocket-ydeevne.

Opsummering: Det grundlæggende om benchmarking

Godt gået! I denne lektion gennemgik vi det grundlæggende i benchmarking af WebSocket-applikationer.

  • Vi lærte, hvad benchmarking er, og hvorfor det er vigtigt for realtidssystemer.
  • Vi identificerede vigtige målepunkter: svartid, gennemløb, samtidige forbindelser og fejlfrekvens.
  • Vi så, hvordan værktøjer og enkle kodestykker kan hjælpe med at måle disse målepunkter.

At forstå disse begreber er det første skridt mod at bygge WebSocket-tjenester med høj ydeevne og god skalerbarhed!

Gratis at komme i gang

Lær WebSockets og realtidssystemer med Spring med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Benchmarking af WebSocket-ydeevne” gratis?

Ja — hele teksten til “Benchmarking af WebSocket-ydeevne” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af WebSockets og realtidssystemer med Spring-kurset, skal du opgradere til CoddyKit PRO. WebSockets og realtidssystemer med Spring-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Benchmarking af WebSocket-ydeevne”?

Lær værktøjer og teknikker til at benchmarke ydeevnen og skalerbarheden af Deres WebSocket-server. Du øver dig i WebSockets og realtidssystemer med Spring med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på WebSockets og realtidssystemer med Spring?

Der kræves ingen tidligere erfaring. WebSockets og realtidssystemer med Spring på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Benchmarking af WebSocket-ydeevne”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne WebSockets og realtidssystemer med Spring-lektion?

Ja. Alle WebSockets og realtidssystemer med Spring-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Benchmarking af WebSocket-ydeevne
  2. Overvågning af WebSocket-forbindelser
  3. Finjustering af Spring WebSocket-indstillinger
  4. Reduktion af båndbredde med meddelelseskomprimering
← Tilbage til WebSockets og realtidssystemer med Spring