Koliko istovremenih korisnika podnosi VPS: napravite izračun

Sve počinje jednim pitanjem: što ti korisnici rade? Tisuću osoba prijavljenih u aplikaciju ne šalje tisuću zahtjeva u sekundi, a stranica poslužena iz predmemorije opterećuje poslužitelj sto puta manje od stranice izračunate pri svakom posjetu. Ovaj vodič pretvara korisnike u zahtjeve, zahtjeve u procesor i memoriju, a zatim pokazuje kako to provjeriti testom opterećenja.

Objavljeno 26. listopada 2026. Autor: Vrijeme čitanja: 9 minuta

Svi vodiči

Najvažnije

  1. Prijavljeni korisnici nisu istovremeni zahtjevi: aktivni korisnik šalje zahtjev otprilike svakih 10 do 30 sekundi.
  2. Zahtjevi u obradi = zahtjevi u sekundi × trajanje zahtjeva (Littleov zakon). Taj broj poslužitelj mora podnijeti.
  3. Jedan vCPU poslužuje najviše 1 000 ÷ (milisekunde izračuna po zahtjevu) zahtjeva u sekundi: 20 ms izračuna, 50 zahtjeva u sekundi.
  4. Memorija ograničava broj workera: svaki PHP ili Python proces zauzima 40 do 200 MB.
  5. Predmemorija mijenja sve: stranica poslužena iz predmemorije traži manje od jedne milisekunde, izračunata WordPress stranica 100 do 300.
  6. Mjerite testom opterećenja (k6, wrk) na kopiji aplikacije, povećavajući opterećenje u koracima.

Od korisnika do zahtjeva

„Istovremeni korisnici” označava tri različite veličine, ovisno o tome tko govori:

Od jedne do druge dolazi se Littleovim zakonom: broj zahtjeva u obradi jednak je protoku, u zahtjevima u sekundi, pomnoženom s prosječnim trajanjem zahtjeva.

Primjer. 600 korisnika aktivnih u isto vrijeme, od kojih svaki pokrene zahtjev svakih 20 sekundi, čini 30 zahtjeva u sekundi. Ako svaki zahtjev traje 100 ms, poslužitelj u prosjeku ima samo 3 zahtjeva u obradi. Pravi je izazov drugdje: u vrhovima opterećenja i u sporim zahtjevima.

Koliko podnosi jedan vCPU

Zahtjev zauzima procesor dok traje njegov izračun: izvršavanje koda, upit bazi, izrada odgovora. Jedan vCPU stoga obrađuje najviše 1 000 ÷ t zahtjeva u sekundi, gdje je t vrijeme izračuna zahtjeva u milisekundama. Vrijeme provedeno u čekanju (vanjski API, disk) ne zauzima procesor, ali zauzima worker.

Vrsta zahtjevaTipično vrijeme izračunaPo vCPU-u, red veličine
Statična datoteka ili stranica poslužena iz predmemorijeManje od 1 msNekoliko tisuća zahtjeva u sekundi
WordPress stranica poslužena iz predmemorije stranica1 do 5 msNekoliko stotina u sekundi
JSON API (Node.js, Go, FastAPI) s indeksiranim SQL upitom5 do 20 ms50 do 200 u sekundi
WordPress ili Laravel stranica izračunata pri svakom posjetu100 do 300 ms3 do 10 u sekundi
Izvješće, izvoz, izrada PDF-a500 ms do nekoliko sekundiManje od 2 u sekundi

Uz ove redove veličine, 30 API zahtjeva u sekundi uz 10 ms izračuna zauzima 30 % jednog jedinog vCPU-a. Istih 30 zahtjeva u sekundi na WordPress stranicama bez predmemorije traži 3 do 9 vCPU-a. Predmemorija stranica služi upravo tome da stranicu prebaci iz četvrtog retka tablice u drugi.

Koliko podnosi memorija

Svaki zahtjev u obradi preuzima worker, a workeri zauzimaju memoriju, radili ili ne. Često memorija, više nego procesor, određuje broj zahtjeva koji se obrađuju usporedno:

Trajne veze (websocketi, obavijesti u stvarnom vremenu) broje se zasebno: stalno otvorene, zauzimaju malo procesora i po nekoliko desetaka kilobajta memorije. Node.js poslužitelj drži ih tisuće u nekoliko stotina MB.

Prava uska grla

U stvarnoj aplikaciji poslužitelj se rijetko zaguši ondje gdje se to očekuje. Najčešći uzroci, redom kojim ih treba tražiti:

  1. Spor SQL upit: indeks koji nedostaje pretvara upit od 2 ms u upit od 2 sekunde, koji zadržava worker i vezu. pg_stat_statements na PostgreSQL-u ili zapis sporih upita u MySQL-u pokazuje ga.
  2. Kaskadni upiti (problem N+1): stranica koja pokreće jedan upit po prikazanom retku pokreće ih stotine.
  3. Sinkroni vanjski poziv: API za plaćanje ili AI koji odgovara za 3 sekunde blokira sinkroni worker na 3 sekunde.
  4. Zahtjevne obrade unutar zahtjeva: slanje e-pošte, promjena veličine slika, izrada PDF-ova, koje treba premjestiti u red zadataka.
  5. Izostanak predmemorije: stranice koje su jednake za sve posjetitelje poslužuju se iz predmemorije, a statične datoteke s web poslužitelja.

Provjera: test opterećenja

Redovi veličine daju prvu procjenu veličine; test opterećenja daje stvarnu. Načelo: simulirati sve veći broj korisnika na kopiji aplikacije i zabilježiti trenutak kada vrijeme odziva naglo poraste.

Terminal: 50 veza tijekom 30 sekundi, s alatom wrk
wrk -t2 -c50 -d30s --latency https://test.vasa-stranica.com/

Za cijeli put korisnika (prijava, pregledavanje, pretraživanje) k6 opisuje scenarij u JavaScriptu i povećava opterećenje u koracima:

Skripta k6 (test.js), pokreće se naredbom: 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://test.vasa-stranica.com/');
  sleep(15);
}

Kada opterećenje raste

Redoslijed koji traži najmanje truda, a donosi najviše:

  1. Staviti u predmemoriju ono što se može (stranice, fragmente, rezultate upita) i ispraviti spore upite.
  2. Uskladiti broj workera s dostupnom memorijom i procesorom.
  3. Prijeći na veću veličinu: više vCPU-a i memorije, bez ikakve promjene u aplikaciji.
  4. Premjestiti bazu podataka na vlastiti poslužitelj.
  5. Rasporediti aplikaciju na više poslužitelja iza raspodjeljivača opterećenja (load balancer).

Prva tri koraka pokrivaju veliku većinu poslovnih aplikacija, stranica i API-ja: nekoliko stotina korisnika aktivnih u isto vrijeme radi na jednom dobro podešenom poslužitelju.

Poslužitelj koji raste s vašim korisnicima

VPS Pro dostupan je u šest veličina, na procesorima Intel Xeon, ECC memoriji i zrcaljenim NVMe SSD-ovima, a na veću veličinu prelazi u svakom trenutku, bez ponovne instalacije. Cjelovita podrška je uključena: recite nam koliko korisnika očekujete pri pokretanju i za godinu dana, i savjetovat ćemo vam veličinu; a kada neka stranica uspori, postavljamo dijagnozu i kažemo vam što učiniti, od sustava do koda vaše aplikacije.

Otkrijte VPS Pro

Česta pitanja

Koliko korisnika podnosi VPS s 2 vCPU-a i 4 GB?

Za API ili aplikaciju čiji zahtjevi traže 10 do 20 ms izračuna, nekoliko stotina korisnika aktivnih u isto vrijeme. Za WordPress stranicu bez predmemorije stranica, otprilike stotinu. Razlika proizlazi iz vremena izračuna svakog zahtjeva i iz predmemorije, zato se test opterećenja isplati.

Koliko posjetitelja dnevno može primiti VPS?

Broj posjetitelja dnevno malo govori: važan je vrh. Da biste od jednog došli do drugog, podijelite dnevne posjete s brojem aktivnih sati, pomnožite s brojem pregledanih stranica po posjetu, a zatim s faktorom vrha od 3 do 5. 10 000 posjeta tijekom 10 sati, po 4 stranice, daje u prosjeku oko 1 stranicu u sekundi, a u vrhu 3 do 5.

Kako znati je li moj poslužitelj zagušen?

Tri znaka: vrijeme odziva raste s prometom, procesor u vršnim satima ostaje iznad 80 % ili dostupna memorija pada blizu nule. Zapisi web poslužitelja tada pokazuju pogreške 502 ili 504, a zahtjevi čekaju slobodan worker.

Mijenjaju li websocketi izračun?

Da: websocket veza ostaje stalno otvorena. Troši malo procesora i nekoliko desetaka kilobajta memorije. Node.js poslužitelj drži ih tisuće; procesor opterećuju poslane poruke, više nego otvorene veze.

Kontaktirajte nas