Montako samanaikaista käyttäjää VPS kestää: näin sen laskette

Kaikki alkaa kysymyksestä: mitä nämä käyttäjät tekevät? Tuhat sovellukseen kirjautunutta henkilöä ei tee tuhatta pyyntöä sekunnissa, ja välimuistista palveltu sivu vie sata kertaa vähemmän resursseja kuin joka kerta laskettu sivu. Tämä opas muuntaa käyttäjät pyynnöiksi ja pyynnöt suoritinajaksi ja muistiksi ja näyttää sitten, miten tulos varmistetaan kuormitustestillä.

Julkaistu 26. lokakuuta 2026 Kirjoittaja: Lukuaika: 9 minuuttia

Kaikki oppaat

Lyhyesti

  1. Kirjautuneet käyttäjät eivät ole samanaikaisia pyyntöjä: aktiivisen käyttäjän pyyntöjen välinen aika on tyypillisesti 10 ja 30 sekunnin välillä.
  2. Käsittelyssä olevat pyynnöt = pyyntöä sekunnissa × yhden pyynnön kesto (Littlen laki). Palvelimen on kestettävä juuri tämä määrä.
  3. Yksi vCPU palvelee enintään 1 000 ÷ (pyynnön laskenta-aika millisekunteina) pyyntöä sekunnissa: 20 ms laskentaa tarkoittaa 50 pyyntöä sekunnissa.
  4. Muisti rajaa workereiden määrän: jokainen PHP- tai Python-prosessi vie 40 ja 200 MB:n välillä.
  5. Välimuisti muuttaa kaiken: välimuistista palveltu sivu vie alle millisekunnin, joka kerta laskettu WordPress-sivu 100 ja 300 millisekunnin välillä.
  6. Mitatkaa kuormitustestillä (k6, wrk) sovelluksen kopiota vastaan ja kasvattakaa kuormaa porrastetusti.

Käyttäjistä pyyntöihin

”Samanaikaiset käyttäjät” tarkoittaa kolmea eri suuretta sen mukaan, kuka puhuu:

Suureesta toiseen päästään Littlen lailla: käsittelyssä olevien pyyntöjen määrä on läpäisy (pyyntöä sekunnissa) kerrottuna pyynnön keskimääräisellä kestolla.

Esimerkki. 600 yhtä aikaa aktiivista käyttäjää, joista kukin tekee pyynnön 20 sekunnin välein, tuottaa 30 pyyntöä sekunnissa. Jos kukin pyyntö kestää 100 ms, palvelimella on käsittelyssä keskimäärin vain 3 pyyntöä. Ratkaiseva kysymys on muualla: piikeissä ja hitaissa pyynnöissä.

Mitä yksi vCPU kestää

Pyyntö varaa suorittimen laskentansa ajaksi: koodin suoritus, tietokantakysely, vastauksen muodostaminen. Yksi vCPU käsittelee siis enintään 1 000 ÷ t pyyntöä sekunnissa, missä t on yhden pyynnön laskenta-aika millisekunteina. Odottamiseen kuluva aika (ulkoinen rajapinta, levy) ei varaa suoritinta, mutta se varaa workerin.

Pyynnön tyyppiTyypillinen laskenta-aikavCPU:ta kohden, suuruusluokka
Staattinen tiedosto tai välimuistista palveltu sivuAlle 1 msUseita tuhansia pyyntöjä sekunnissa
Sivuvälimuistista palveltu WordPress-sivu1 ja 5 ms:n välilläUseita satoja sekunnissa
JSON-rajapinta (Node.js, Go, FastAPI) ja indeksoitu SQL-kysely5 ja 20 ms:n välillä50 ja 200 pyynnön välillä sekunnissa
WordPress- tai Laravel-sivu, joka lasketaan joka käynnillä100 ja 300 ms:n välillä3 ja 10 pyynnön välillä sekunnissa
Raportti, vienti, PDF-tiedoston luonti500 ms:sta useisiin sekunteihinAlle 2 pyyntöä sekunnissa

Näillä suuruusluokilla 30 rajapintapyyntöä sekunnissa 10 ms:n laskenta-ajalla vie 30 % yhdestä vCPU:sta. Samat 30 pyyntöä sekunnissa WordPress-sivuihin ilman välimuistia vaativat 3 ja 9 vCPU:n välillä. Sivuvälimuistin tehtävä on juuri siirtää sivu taulukon neljänneltä riviltä toiselle.

Mitä muisti kestää

Jokaisen käsittelyssä olevan pyynnön hoitaa worker, ja workerit vievät muistia, tekivät ne työtä tai eivät. Usein juuri muisti, enemmän kuin suoritin, ratkaisee rinnakkain käsiteltävien pyyntöjen määrän:

Pysyvät yhteydet (websocketit, reaaliaikaiset ilmoitukset) lasketaan erikseen: jatkuvasti avoimina ne vievät vähän suoritinta ja kukin muutamia kymmeniä kilotavuja muistia. Node.js-palvelin pitää niitä tuhansia muutamassa sadassa megatavussa.

Todelliset pullonkaulat

Todellisessa sovelluksessa palvelin ruuhkautuu harvoin siellä, missä sitä odottaa. Yleisimmät syyt siinä järjestyksessä, jossa niitä kannattaa etsiä:

  1. Hidas SQL-kysely: puuttuva indeksi muuttaa 2 ms:n kyselyn 2 sekunnin kyselyksi, joka pitää workeria ja yhteyttä varattuna. PostgreSQL:n pg_stat_statements tai MySQL:n hitaiden kyselyjen loki osoittaa sen.
  2. Ketjutetut kyselyt (N+1-ongelma): sivu, joka tekee yhden kyselyn jokaista näytettyä riviä kohden, tekee niitä satoja.
  3. Synkroninen ulkoinen kutsu: maksu- tai tekoälyrajapinta, joka vastaa 3 sekunnissa, pitää synkronisen workerin varattuna 3 sekuntia.
  4. Raskaat käsittelyt pyynnön sisällä: sähköpostien lähetys, kuvien koon muuttaminen, PDF-tiedostojen luonti, jotka kannattaa siirtää tehtäväjonoon.
  5. Välimuistin puuttuminen: kaikille kävijöille samanlaiset sivut palvellaan välimuistista ja staattiset tiedostot suoraan verkkopalvelimelta.

Varmistus: kuormitustesti

Suuruusluokat antavat ensimmäisen koon; kuormitustesti antaa todellisen. Periaate: simuloidaan yhä useampia käyttäjiä sovelluksen kopiota vastaan ja kirjataan hetki, jolloin vasteaika romahtaa.

Pääte: 50 yhteyttä 30 sekunnin ajan wrk-työkalulla
wrk -t2 -c50 -d30s --latency https://testi.sivustonne.com/

Kokonaiselle käyttöpolulle (kirjautuminen, selaus, haku) k6 kuvaa skenaarion JavaScriptillä ja kasvattaa kuormaa porrastetusti:

k6-skripti (test.js), ajetaan komennolla: 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://testi.sivustonne.com/');
  sleep(15);
}

Kun kuorma kasvaa

Järjestys, joka vaatii vähiten työtä ja tuottaa eniten:

  1. Viekää välimuistiin kaikki, mikä sinne sopii (sivut, sivun osat, kyselyjen tulokset), ja korjatkaa hitaat kyselyt.
  2. Säätäkää workereiden määrä käytettävissä olevan muistin ja suorittimen mukaan.
  3. Siirtykää suurempaan kokoon: enemmän vCPU:ita ja muistia ilman muutoksia sovellukseen.
  4. Siirtäkää tietokanta omalle palvelimelleen.
  5. Jakakaa sovellus useille palvelimille kuormantasaajan taakse.

Kolme ensimmäistä vaihetta kattavat valtaosan liiketoimintasovelluksista, sivustoista ja rajapinnoista: useita satoja yhtä aikaa aktiivisia käyttäjiä mahtuu yhdelle hyvin säädetylle palvelimelle.

Palvelin, joka kasvaa käyttäjienne mukana

VPS Pro on saatavana kuutena kokona Intel Xeon -suorittimilla, ECC-muistilla ja peilatuilla NVMe-SSD-levyillä, ja se siirtyy suurempaan kokoon milloin tahansa ilman uudelleenasennusta. Kokonaistuki sisältyy: kertokaa meille, montako käyttäjää odotatte julkaisussa ja vuoden päästä, niin suosittelemme sopivan koon; ja kun jokin sivu hidastuu, teemme diagnoosin ja kerromme, mitä tehdä, järjestelmästä sovelluksenne koodiin asti.

Katso VPS Pro

Usein kysytyt kysymykset

Montako käyttäjää kestää VPS, jossa on 2 vCPU:ta ja 4 GB muistia?

Rajapinnalle tai sovellukselle, jonka pyynnöt vievät 10 ja 20 ms:n välillä laskenta-aikaa, useita satoja yhtä aikaa aktiivisia käyttäjiä. WordPress-sivustolle ilman sivuvälimuistia noin sata. Ero johtuu kunkin pyynnön laskenta-ajasta ja välimuistista, ja siksi kuormitustesti kannattaa.

Montako kävijää päivässä VPS voi ottaa vastaan?

Kävijöiden määrä päivässä kertoo vähän: ratkaisevaa on huippu. Muuntaaksenne luvun jakakaa päivän käynnit aktiivisten tuntien määrällä, kertokaa käyntiä kohden katsottujen sivujen määrällä ja sitten huippukertoimella, joka on 3:n ja 5:n välillä. 10 000 käyntiä 10 tunnin aikana, kukin 4 sivua, tekee keskimäärin noin 1 sivun sekunnissa ja huipussa 3 ja 5 sivun välillä sekunnissa.

Mistä tiedän, onko palvelimeni ruuhkautunut?

Kolme merkkiä: vasteaika kasvaa liikenteen mukana, suoritin pysyy ruuhka-aikoina yli 80 %:ssa tai käytettävissä oleva muisti laskee lähelle nollaa. Verkkopalvelimen lokeissa näkyy silloin 502- tai 504-virheitä, ja pyynnöt odottavat vapaata workeria.

Muuttavatko websocketit laskelmaa?

Kyllä: websocket-yhteys pysyy avoinna jatkuvasti. Se kuluttaa vähän suoritinta ja muutamia kymmeniä kilotavuja muistia. Node.js-palvelin pitää niitä tuhansia; suoritinta kuormittavat lähetetyt viestit enemmän kuin avoimet yhteydet.

Ota yhteyttä