Mitu samaaegset kasutajat VPS talub: kuidas seda arvutada

Kõik algab küsimusest: mida need kasutajad teevad? Tuhat rakendusse sisse loginud inimest ei tee tuhat päringut sekundis ja vahemälust serveeritud leht nõuab sada korda vähem tööd kui arvutatud leht. See juhend teisendab kasutajad päringuteks, päringud protsessoriks ja mäluks ning näitab, kuidas seda koormustestiga kontrollida.

Avaldatud 26. oktoobril 2026 Autor: Lugemisaeg: 9 minutit

Kõik juhendid

Lühidalt

  1. Sisse loginud kasutajad ei ole samaaegsed päringud: aktiivne kasutaja saadab päringu umbes iga 10 kuni 30 sekundi järel.
  2. Käimasolevad päringud = päringud sekundis × ühe päringu kestus (Little'i seadus). Just seda arvu peab server taluma.
  3. Üks vCPU teenindab kõige rohkem 1 000 ÷ (arvutusmillisekundid päringu kohta) päringut sekundis: 20 ms arvutust teeb 50 päringut sekundis.
  4. Mälu piirab workerite arvu: iga PHP- või Pythoni protsess hõivab 40 kuni 200 MB.
  5. Vahemälu muudab kõike: vahemälust serveeritud leht nõuab alla millisekundi, arvutatud WordPressi leht 100 kuni 300.
  6. Mõõtke koormustestiga (k6, wrk) rakenduse koopial, tõstes koormust astmeti.

Kasutajatest päringuteni

«Samaaegsed kasutajad» tähistab olenevalt rääkijast kolme eri suurust:

Ühelt teisele liigutakse Little'i seaduse abil: käimasolevate päringute arv võrdub läbilaskevõimega päringutes sekundis, korrutatud päringu keskmise kestusega.

Näide. 600 korraga aktiivset kasutajat, kellest igaüks käivitab päringu iga 20 sekundi järel, teevad 30 päringut sekundis. Kui iga päring kestab 100 ms, on serveril keskmiselt ainult 3 käimasolevat päringut. Tegelik küsimus on mujal: tippudes ja aeglastes päringutes.

Mida üks vCPU talub

Päring hõivab protsessorit oma arvutuse ajaks: koodi täitmine, andmebaasi pärimine, vastuse koostamine. Üks vCPU töötleb seega kõige rohkem 1 000 ÷ t päringut sekundis, kus t on päringu arvutusaeg millisekundites. Ootamisele kuluv aeg (väline API, ketas) protsessorit ei hõiva, kuid hõivab workeri.

Päringu tüüpTüüpiline arvutusaegvCPU kohta, suurusjärk
Staatiline fail või vahemälust serveeritud lehtAlla 1 msMitu tuhat päringut sekundis
Lehevahemälust serveeritud WordPressi leht1 kuni 5 msMitusada sekundis
JSON API (Node.js, Go, FastAPI) indekseeritud SQL-päringuga5 kuni 20 ms50 kuni 200 sekundis
Igal külastusel arvutatav WordPressi või Laraveli leht100 kuni 300 ms3 kuni 10 sekundis
Aruanne, eksport, PDF-i genereerimine500 ms kuni mitu sekunditAlla 2 sekundis

Nende suurusjärkude järgi hõivavad 30 API-päringut sekundis 10 ms arvutusajaga 30 % ühest vCPU-st. Samad 30 päringut sekundis vahemäluta WordPressi lehtedel nõuavad 3 kuni 9 vCPU-d. Lehevahemälu ülesanne ongi viia leht tabeli neljandalt realt teisele.

Mida mälu talub

Iga käimasolevat päringut käsitleb worker ja workerid hõivavad mälu, olgu nad tööga hõivatud või mitte. Sageli määrab paralleelselt töödeldavate päringute arvu pigem mälu kui protsessor:

Püsiühendusi (websocketid, reaalajas teavitused) arvestatakse eraldi: pidevalt avatuna hõivavad need vähe protsessorit ja igaüks mõnikümmend kilobaiti mälu. Node.js-server hoiab neid tuhandeid mõnesaja megabaidi sees.

Tegelikud kitsaskohad

Päris rakenduses küllastub server harva seal, kus seda oodatakse. Kõige sagedasemad põhjused, järjekorras, milles neid otsida:

  1. Aeglane SQL-päring: puuduv indeks muudab 2 ms päringu 2-sekundiliseks ja see hoiab kinni workeri ning ühenduse. PostgreSQL-is näitab selle pg_stat_statements, MySQL-is aeglaste päringute logi.
  2. Kaskaadpäringud (N+1 probleem): leht, mis käivitab iga kuvatava rea kohta ühe päringu, käivitab neid sadu.
  3. Sünkroonne väliskutse: makse- või AI-API, mis vastab 3 sekundiga, blokeerib sünkroonse workeri 3 sekundiks.
  4. Rasked töötlused päringu sees: e-kirjade saatmine, piltide suuruse muutmine, PDF-ide genereerimine; need kuuluvad tööjärjekorda.
  5. Vahemälu puudumine: kõigile külastajatele ühesugused lehed serveeritakse vahemälust, staatilised failid veebiserverist.

Kontroll: koormustest

Suurusjärgud annavad esimese suuruse; koormustest annab tegeliku. Põhimõte: simuleerida rakenduse koopial üha rohkem kasutajaid ja märkida hetk, mil vastamisaeg järsult halveneb.

Terminal: 50 ühendust 30 sekundi jooksul, wrk-ga
wrk -t2 -c50 -d30s --latency https://preprod.teie-sait.com/

Tervikliku kasutajateekonna jaoks (sisselogimine, sirvimine, otsing) kirjeldab k6 stsenaariumi JavaScriptis ja tõstab koormust astmeti:

k6 skript (test.js), käivitatakse käsuga: 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://preprod.teie-sait.com/');
  sleep(15);
}

Kui koormus kasvab

Järjekord, mis nõuab kõige vähem ja annab kõige rohkem:

  1. Pange vahemällu kõik, mida saab (lehed, fragmendid, päringute tulemused), ja parandage aeglased päringud.
  2. Seadistage workerite arv vastavalt saadaolevale mälule ja protsessorile.
  3. Minge üle suuremale suurusele: rohkem vCPU-sid ja mälu, rakenduses midagi muutmata.
  4. Paigutage andmebaas oma serverisse.
  5. Jaotage rakendus mitmele serverile koormusjaoturi taha.

Esimesed kolm sammu katavad valdava enamiku äritarkvarast, saitidest ja API-dest: mitusada korraga aktiivset kasutajat mahub ühte hästi häälestatud serverisse.

Server, mis kasvab koos teie kasutajatega

VPS Pro on saadaval kuues suuruses, Intel Xeon protsessoritel, ECC-mälu ja peegeldatud NVMe SSD-dega, ning läheb igal ajal suuremale suurusele ilma uuesti paigaldamata. Terviklik tugi sisaldub: öelge meile, mitut kasutajat ootate käivitamisel ja aasta pärast, ja me soovitame teile suuruse; kui mõni leht aeglustub, diagnoosime ja ütleme teile, mida teha, süsteemist kuni teie rakenduse koodini.

Vaadake VPS Pro

Korduma kippuvad küsimused

Mitut kasutajat talub 2 vCPU ja 4 GB mäluga VPS?

API või rakenduse puhul, mille päringud vajavad 10 kuni 20 ms arvutusaega, mitusada korraga aktiivset kasutajat. Lehevahemäluta WordPressi saidi puhul umbes sada. Erinevus tuleneb iga päringu arvutusajast ja vahemälust, seepärast tasub teha koormustest.

Mitu külastajat päevas VPS vastu võtab?

Külastajate arv päevas ütleb vähe: loeb tipp. Ühelt teisele jõudmiseks jagage päeva külastused aktiivsete tundide arvuga, korrutage külastuse kohta vaadatud lehtede arvuga ja seejärel tiputeguriga 3 kuni 5. 10 000 külastust 10 tunni jooksul, igaüks 4 lehte, annavad keskmiselt umbes 1 lehe sekundis ja tipus 3 kuni 5.

Kuidas teada, kas minu server on küllastunud?

Kolm märki: vastamisaeg kasvab koos liiklusega, protsessor püsib tipptundidel üle 80 % või saadaolev mälu langeb nulli lähedale. Veebiserveri logid näitavad siis vigu 502 või 504 ja päringud ootavad vaba workerit.

Kas websocketid muudavad arvutust?

Jah: websocketi ühendus jääb pidevalt avatuks. See tarbib vähe protsessorit ja mõnikümmend kilobaiti mälu. Node.js-server hoiab neid tuhandeid; protsessorit koormavad pigem saadetud sõnumid kui avatud ühendused.

Võtke meiega ühendust