Kolik souběžných uživatelů zvládne VPS: jak to spočítat

Vše začíná otázkou: co tito uživatelé dělají? Tisíc lidí přihlášených do aplikace neposílá tisíc požadavků za sekundu a stránka obsloužená z cache stojí stokrát méně než stránka, kterou server pokaždé počítá. Tento průvodce převádí uživatele na požadavky, požadavky na procesor a paměť a pak ukazuje, jak vše ověřit zátěžovým testem.

Publikováno 26. října 2026 Autor: Doba čtení: 9 minut

Všichni průvodci

To nejdůležitější

  1. Přihlášení uživatelé nejsou souběžné požadavky: aktivní uživatel pošle požadavek zhruba jednou za 10 až 30 sekund.
  2. Rozpracované požadavky = požadavky za sekundu × doba trvání požadavku (Littleův zákon). Právě toto číslo musí server zvládnout.
  3. Jeden vCPU obslouží nanejvýš 1 000 ÷ (milisekundy výpočtu na požadavek) požadavků za sekundu: 20 ms výpočtu, 50 požadavků za sekundu.
  4. Paměť omezuje počet workerů: každý proces PHP nebo Pythonu zabírá 40 až 200 MB.
  5. Cache mění všechno: stránka obsloužená z cache stojí méně než milisekundu, stránka WordPressu počítaná při každé návštěvě 100 až 300.
  6. Měřte zátěžovým testem (k6, wrk) na kopii aplikace a zátěž zvyšujte po stupních.

Od uživatelů k požadavkům

„Souběžní uživatelé“ označují podle toho, kdo mluví, tři různé veličiny:

Mezi nimi se přechází pomocí Littleova zákona: počet rozpracovaných požadavků se rovná propustnosti v požadavcích za sekundu vynásobené průměrnou dobou trvání požadavku.

Příklad. 600 uživatelů aktivních ve stejnou chvíli, z nichž každý vyvolá požadavek jednou za 20 sekund, dává 30 požadavků za sekundu. Pokud každý požadavek trvá 100 ms, má server v průměru rozpracované jen 3 požadavky. To podstatné leží jinde: ve špičkách a v pomalých požadavcích.

Co zvládne jeden vCPU

Požadavek zaměstnává procesor po dobu svého výpočtu: provedení kódu, dotaz do databáze, sestavení odpovědi. Jeden vCPU tedy zpracuje nanejvýš 1 000 ÷ t požadavků za sekundu, kde t je doba výpočtu jednoho požadavku v milisekundách. Čas strávený čekáním (na externí API, na disk) procesor nezaměstnává, ale zaměstnává worker.

Typ požadavkuTypická doba výpočtuNa jeden vCPU, řádově
Statický soubor nebo stránka obsloužená z cacheMéně než 1 msNěkolik tisíc požadavků za sekundu
Stránka WordPressu obsloužená z cache stránek1 až 5 msNěkolik stovek za sekundu
JSON API (Node.js, Go, FastAPI) s indexovaným dotazem SQL5 až 20 ms50 až 200 za sekundu
Stránka WordPressu nebo Laravelu počítaná při každé návštěvě100 až 300 ms3 až 10 za sekundu
Report, export, generování PDF500 ms až několik sekundMéně než 2 za sekundu

S těmito řády zaberou 30 požadavků API za sekundu s 10 ms výpočtu 30 % jediného vCPU. Stejných 30 požadavků za sekundu na stránky WordPressu bez cache vyžaduje 3 až 9 vCPU. Cache stránek slouží právě k tomu, aby se stránka přesunula ze čtvrtého řádku tabulky na druhý.

Co zvládne paměť

Každý rozpracovaný požadavek obsluhuje worker a workery zabírají paměť, ať pracují, nebo ne. Počet paralelně zpracovávaných požadavků často určuje spíše paměť než procesor:

Trvalá připojení (websockety, notifikace v reálném čase) se počítají zvlášť: jsou otevřená nepřetržitě, spotřebují málo procesoru a každé několik desítek kilobajtů paměti. Server Node.js jich udrží tisíce v několika stovkách MB.

Skutečná úzká hrdla

V reálné aplikaci se server málokdy zahltí tam, kde to čekáte. Nejčastější příčiny, v pořadí, v jakém je hledat:

  1. Pomalý dotaz SQL: chybějící index promění dotaz na 2 ms v dotaz na 2 sekundy, který drží worker i připojení. Na PostgreSQL ho odhalí pg_stat_statements, na MySQL log pomalých dotazů.
  2. Kaskádové dotazy (problém N+1): stránka, která spouští jeden dotaz na každý zobrazený řádek, jich spustí stovky.
  3. Synchronní externí volání: platební API nebo API umělé inteligence, které odpovídá 3 sekundy, zablokuje synchronní worker na 3 sekundy.
  4. Náročná zpracování uvnitř požadavku: odesílání e-mailů, změna velikosti obrázků, generování PDF; ta patří do fronty úloh.
  5. Chybějící cache: stránky stejné pro všechny návštěvníky se obsluhují z cache, statické soubory přímo webovým serverem.

Ověření: zátěžový test

Řády dávají první odhad velikosti; zátěžový test dává tu skutečnou. Princip: simulovat stále více uživatelů na kopii aplikace a zaznamenat okamžik, kdy doba odezvy prudce vzroste.

Terminál: 50 připojení po dobu 30 sekund, s wrk
wrk -t2 -c50 -d30s --latency https://preprod.vas-web.com/

Pro celý průchod aplikací (přihlášení, procházení, vyhledávání) popíše k6 scénář v JavaScriptu a zátěž zvyšuje po stupních:

Skript k6 (test.js), spouštěný příkazem: 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.vas-web.com/');
  sleep(15);
}

Když zátěž roste

Pořadí, které stojí nejméně a přináší nejvíc:

  1. Ukládat do cache, co to dovolí (stránky, fragmenty, výsledky dotazů), a opravit pomalé dotazy.
  2. Nastavit počet workerů podle dostupné paměti a procesoru.
  3. Přejít na vyšší velikost: více vCPU a paměti, bez jakékoli změny v aplikaci.
  4. Umístit databázi na vlastní server.
  5. Rozložit aplikaci na několik serverů za load balancerem.

První tři kroky pokryjí velkou většinu firemních aplikací, webů a API: několik stovek uživatelů aktivních ve stejnou chvíli zvládne jediný dobře nastavený server.

Server, který roste s vašimi uživateli

VPS Pro nabízí šest velikostí na procesorech Intel Xeon, paměti ECC a zrcadlených SSD NVMe a na vyšší velikost přejde kdykoli, bez reinstalace. Komplexní podpora je v ceně: řekněte nám, kolik uživatelů očekáváte při spuštění a za rok, a doporučíme vám velikost; a když se některá stránka zpomalí, stanovíme diagnózu a řekneme vám, co udělat, od systému až po kód vaší aplikace.

Objevit VPS Pro

Časté otázky

Kolik uživatelů zvládne VPS se 2 vCPU a 4 GB?

U API nebo aplikace, jejíž požadavky potřebují 10 až 20 ms výpočtu, několik stovek uživatelů aktivních ve stejnou chvíli. U webu na WordPressu bez cache stránek zhruba stovku. Rozdíl dělá doba výpočtu každého požadavku a cache, a proto má smysl zátěžový test.

Kolik návštěvníků denně zvládne VPS?

Počet návštěvníků za den mnoho neřekne: rozhoduje špička. Pro převod vydělte denní návštěvy počtem hodin provozu, vynásobte počtem zobrazených stránek na návštěvu a pak koeficientem špičky 3 až 5. 10 000 návštěv za 10 hodin, každá se 4 stránkami, dává v průměru zhruba 1 stránku za sekundu a ve špičce 3 až 5.

Jak poznám, že je můj server přetížený?

Tři příznaky: doba odezvy roste s provozem, procesor zůstává ve špičce nad 80 % nebo dostupná paměť klesá téměř k nule. Logy webového serveru pak ukazují chyby 502 nebo 504 a požadavky čekají na volný worker.

Mění websockety výpočet?

Ano: připojení přes websocket zůstává otevřené nepřetržitě. Spotřebuje málo procesoru a několik desítek kilobajtů paměti. Server Node.js jich udrží tisíce; procesor zatěžují spíše odesílané zprávy než otevřená připojení.

Kontaktujte nás