Hvor mange samtidige brugere kan en VPS klare: sådan regner du

Det hele starter med et spørgsmål: hvad laver brugerne? Tusind personer, der er logget ind i en applikation, sender ikke tusind forespørgsler i sekundet, og en side, der leveres fra en cache, koster hundrede gange mindre end en side, der beregnes. Denne guide oversætter brugere til forespørgsler og forespørgsler til processor og hukommelse, og viser derefter, hvordan du kontrollerer det med en belastningstest.

Udgivet den 26. oktober 2026 Af Læsetid: 9 minutter

Alle guider

Det vigtigste

  1. Brugere, der er logget ind, er ikke samtidige forespørgsler: en aktiv bruger sender en forespørgsel cirka hvert 10. til 30. sekund.
  2. Igangværende forespørgsler = forespørgsler pr. sekund × varigheden af en forespørgsel (Littles lov). Det er det tal, serveren skal kunne klare.
  3. En vCPU betjener højst 1.000 ÷ (millisekunders beregning pr. forespørgsel) forespørgsler i sekundet: 20 ms beregning giver 50 forespørgsler i sekundet.
  4. Hukommelsen sætter grænsen for antallet af workers: hver PHP- eller Python-proces optager 40 til 200 MB.
  5. Cachen ændrer alt: en side leveret fra en cache koster under ét millisekund, en beregnet WordPress-side 100 til 300.
  6. Mål med en belastningstest (k6, wrk) på en kopi af applikationen, og øg belastningen trinvis.

Fra brugere til forespørgsler

«Samtidige brugere» betegner tre forskellige størrelser, alt efter hvem der taler:

Man går fra den ene til den anden med Littles lov: antallet af igangværende forespørgsler er lig med gennemstrømningen i forespørgsler pr. sekund ganget med den gennemsnitlige varighed af en forespørgsel.

Eksempel. 600 brugere, der er aktive på samme tid og hver udløser en forespørgsel hvert 20. sekund, giver 30 forespørgsler i sekundet. Varer hver forespørgsel 100 ms, har serveren i gennemsnit kun 3 forespørgsler i gang. Udfordringen ligger et andet sted: i spidsbelastningerne og i de langsomme forespørgsler.

Det, en vCPU kan klare

En forespørgsel optager processoren, så længe den beregnes: koden kører, databasen forespørges, svaret bygges. En vCPU behandler derfor højst 1.000 ÷ t forespørgsler i sekundet, hvor t er en forespørgsels beregningstid i millisekunder. Den tid, der går med at vente (på et eksternt API, en disk), optager ikke processoren, men den optager en worker.

Type forespørgselTypisk beregningstidPr. vCPU, størrelsesorden
Statisk fil eller side leveret fra en cacheUnder 1 msFlere tusinde forespørgsler i sekundet
WordPress-side leveret af en sidecache1 til 5 msFlere hundrede i sekundet
JSON-API (Node.js, Go, FastAPI) med en indekseret SQL-forespørgsel5 til 20 ms50 til 200 i sekundet
WordPress- eller Laravel-side beregnet ved hvert besøg100 til 300 ms3 til 10 i sekundet
Rapport, eksport, generering af PDF500 ms til flere sekunderUnder 2 i sekundet

Med disse størrelsesordener optager 30 API-forespørgsler i sekundet med 10 ms beregning 30 % af en enkelt vCPU. De samme 30 forespørgsler i sekundet på WordPress-sider uden cache kræver 3 til 9 vCPU. Sidecachen er netop til for at flytte en side fra tabellens fjerde linje til den anden.

Det, hukommelsen kan klare

Hver igangværende forespørgsel håndteres af en worker, og workers optager hukommelse, hvad enten de arbejder eller ej. Det er ofte hukommelsen, mere end processoren, der bestemmer, hvor mange forespørgsler der behandles parallelt:

Vedvarende forbindelser (websockets, notifikationer i realtid) tælles for sig: de er åbne hele tiden og bruger lidt processor og nogle titals kilobyte hukommelse hver. En Node.js-server kan klare tusindvis af dem på nogle hundrede MB.

De reelle flaskehalse

I en rigtig applikation bliver serveren sjældent overbelastet dér, hvor man venter det. De hyppigste årsager, i den rækkefølge du skal lede efter dem:

  1. En langsom SQL-forespørgsel: et manglende indeks forvandler en forespørgsel på 2 ms til en på 2 sekunder, som holder en worker og en forbindelse fast. pg_stat_statements i PostgreSQL eller MySQL's log over langsomme forespørgsler peger den ud.
  2. Forespørgsler i kaskade (N+1-problemet): en side, der sender én forespørgsel pr. vist linje, sender hundredvis.
  3. Et synkront eksternt kald: et betalings- eller AI-API, der svarer på 3 sekunder, blokerer en synkron worker i 3 sekunder.
  4. Tunge behandlinger i selve forespørgslen: afsendelse af e-mails, skalering af billeder, generering af PDF'er, som hører hjemme i en opgavekø.
  5. Manglende cache: sider, der er ens for alle besøgende, leveres fra en cache, statiske filer fra webserveren.

Kontrollér det: belastningstesten

Størrelsesordenerne giver en første størrelse; en belastningstest giver den rigtige. Princippet: simulér flere og flere brugere på en kopi af applikationen, og notér det øjeblik, hvor svartiden knækker.

Terminal: 50 forbindelser i 30 sekunder med wrk
wrk -t2 -c50 -d30s --latency https://staging.din-hjemmeside.com/

Til et komplet forløb (login, navigation, søgning) beskriver k6 et scenarie i JavaScript og øger belastningen trinvis:

k6-script (test.js), køres med: k6 run test.js
import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  stages: [
    { duration: '2m', target: 100 },
    { duration: '5m', target: 100 },
    { duration: '2m', target: 300 },
    { duration: '5m', target: 300 },
    { duration: '2m', target: 0 },
  ],
  thresholds: { http_req_duration: ['p(95)<500'] },
};

export default function () {
  http.get('https://staging.din-hjemmeside.com/');
  sleep(15);
}

Når belastningen vokser

Den rækkefølge, der koster mindst og giver mest:

  1. Cache det, der kan caches (sider, fragmenter, forespørgselsresultater), og ret de langsomme forespørgsler.
  2. Indstil antallet af workers efter den tilgængelige hukommelse og processorkraft.
  3. Skift til en større størrelse: flere vCPU og mere hukommelse, uden at ændre noget i applikationen.
  4. Flyt databasen over på sin egen server.
  5. Fordel applikationen på flere servere bag en load balancer.

De tre første trin dækker langt de fleste forretningsapplikationer, hjemmesider og API'er: flere hundrede brugere, der er aktive på samme tid, kan klares af en enkelt velindstillet server.

En server, der vokser med dine brugere

VPS Pro fås i seks størrelser, på Intel Xeon-processorer, ECC-hukommelse og spejlede NVMe-SSD'er, og skifter til en større størrelse når som helst, uden geninstallation. Totalsupport er inkluderet: fortæl os, hvor mange brugere du forventer ved lanceringen og om et år, så anbefaler vi størrelsen; og når en side bliver langsom, stiller vi diagnosen og fortæller dig, hvad du skal gøre, fra systemet til din applikations kode.

Opdag VPS Pro

Ofte stillede spørgsmål

Hvor mange brugere kan en VPS med 2 vCPU og 4 GB klare?

For et API eller en applikation, hvis forespørgsler tager 10 til 20 ms at beregne, flere hundrede brugere, der er aktive på samme tid. For en WordPress-hjemmeside uden sidecache omkring hundrede. Forskellen skyldes hver forespørgsels beregningstid og cachen, og derfor giver en belastningstest mening.

Hvor mange besøgende om dagen kan en VPS modtage?

Antallet af besøgende om dagen siger ikke meget: det, der tæller, er spidsbelastningen. For at gå fra det ene til det andet dividerer du dagens besøg med antallet af aktive timer, ganger med antallet af sidevisninger pr. besøg og derefter med en spidsfaktor på 3 til 5. 10.000 besøg over 10 timer med 4 sider hver giver omkring 1 side i sekundet i gennemsnit og 3 til 5 ved spidsbelastning.

Hvordan ved jeg, om min server er overbelastet?

Tre tegn: svartiden stiger med trafikken, processoren ligger over 80 % i myldretiden, eller den tilgængelige hukommelse falder til tæt på nul. Webserverens logfiler viser så 502- eller 504-fejl, og forespørgslerne venter på en ledig worker.

Ændrer websockets beregningen?

Ja: en websocket-forbindelse forbliver åben hele tiden. Den bruger lidt processor og nogle titals kilobyte hukommelse. En Node.js-server kan klare tusindvis af dem; det er de sendte beskeder, mere end de åbne forbindelser, der belaster processoren.

Kontakt os