Pamäť je zdroj, ktorý najčastejšie určuje veľkosť servera: dochádza ako prvá, a keď dôjde, server nespomalí, ale začne zastavovať služby. Tento sprievodca uvádza pravidlo výpočtu, spotrebu jednotlivých častí aplikácie, typické profily a spôsob, ako merať na serveri, ktorý už beží.
available príkazu free -h, nie stĺpec free.Server nespotrebúva pamäť „všeobecne“: každý spustený program si drží svoju časť, kým beží. Výpočet preto vychádza zo zoznamu procesov, ktoré bežia trvalo, a potom pripočíta špičku a rezervu:
Potrebná pamäť = (systém + trvalé služby + špička príležitostných úloh) × 1,25
Nasledujúce rádové hodnoty platia pre bežne veľkú aplikáciu meranú v produkcii. Slúžia ako východiskový bod; posledné slovo má vždy meranie na vašej vlastnej aplikácii, opísané nižšie.
| Časť | Typická pamäť | Čo ju ovplyvňuje |
|---|---|---|
| Nginx, Caddy (webový server, proxy) | 10 až 50 MB | Takmer konštantná: počet pripojení má malý vplyv. |
| PHP-FPM (WordPress, Laravel, Symfony) | 40 až 80 MB na proces | Počet procesov, obmedzený parametrom pm.max_children: 10 procesov znamená 400 až 800 MB. |
| Node.js (API, Next.js, NestJS) | 60 až 300 MB na proces | Počet procesov (režim cluster, PM2) a veľkosť haldy, obmedzená parametrom --max-old-space-size. |
| Python (Django, FastAPI, Flask) | 80 až 200 MB na proces | Počet workerov Gunicorn alebo Uvicorn a načítané knižnice: pandas alebo model strojového učenia pridajú stovky MB. |
| Java (Spring Boot) | 300 MB až 1 GB na aplikáciu | Maximálna veľkosť haldy: JVM si predvolene vyhradí štvrtinu pamäte, ktorú vidí. |
| Go, Rust | 10 až 100 MB | Údaje, ktoré si aplikácia sama drží v pamäti. |
| PostgreSQL | 25 % pamäte pre shared_buffers, plus niekoľko MB na pripojenie | Objem často čítaných údajov, počet pripojení, work_mem. |
| MySQL, MariaDB | innodb_buffer_pool_size, predvolene 128 MB | Na serveri vyhradenom pre databázu tento buffer bežne zaberá až 80 % pamäte. |
| Redis | Veľkosť údajov plus ich štruktúry | Počas ukladania na disk sa upravené stránky duplikujú: v najhoršom prípade až dvojnásobok. |
| Elasticsearch, OpenSearch | Aspoň 2 GB pre haldu | Halda neprekročí polovicu pamäte: zvyšok slúži ako cache súborov. |
Pri aplikáciách v JavaScripte sa často opakuje jedna špička: kompilácia (build). Príkaz npm run build na projekte Next.js, Nuxt alebo Angular si bežne sám vyžiada 1 až 2 GB na niekoľko minút, navyše k tomu, čo už beží. Kompilovať na serveri znamená dimenzovať na túto špičku; kompilovať na svojom počítači alebo v CI a na server nahrať len výsledok znamená sa jej vyhnúť.
Rovnaká úvaha platí pre kontajnery Docker: každý kontajner je súbor procesov ako ktorékoľvek iné a démon Dockeru pridáva vlastnú spotrebu. Príkaz docker stats ukáže, koľko zaberá každý z nich.
Tieto profily sčítavajú predchádzajúce časti vrátane špičky a rezervy. Predpokladajú bežne veľkú aplikáciu a návštevnosť pri spustení; objemná databáza alebo trvalo vysoká návštevnosť posúvajú hodnotu nahor.
| Čo beží na serveri | Potrebná pamäť |
|---|---|
| Statický web, proxy, malý bot alebo plánovaný skript | 1 až 2 GB |
| Jeden web na WordPresse s MariaDB a cache stránok | 2 GB |
| E-shop na WooCommerce alebo viacero webov na WordPresse | 4 GB |
| API v Node.js alebo Pythone s PostgreSQL, prví používatelia | 4 GB |
| Aplikácia Next.js kompilovaná na serveri, jej API a databáza PostgreSQL | 6 až 8 GB |
| Viacero aplikácií v kontajneroch, testovacie a produkčné prostredie | 8 GB |
| Databáza s veľkosťou niekoľkých desiatok GB, intenzívne čítaná | 16 GB a viac |
| Jazykový model so 7 až 8 miliardami parametrov spustený na serveri | 16 GB |
Aplikácia, ktorá volá model AI cez API (OpenAI, Anthropic, Mistral), sa dimenzuje ako ktorákoľvek webová aplikácia: model beží u svojho vydavateľa a váš server čaká na jeho odpoveď. Mierku mení až spustenie modelu priamo na serveri.
Na serveri v prevádzke nahrádza odhad meranie. Tri príkazy ukážu, ako na tom ste:
free -h
ps aux --sort=-rss | head -n 15
vmstat 5 5
free -h: čítajte stĺpec available, teda pamäť skutočne dostupnú na spustenie nových programov. Stĺpec free je takmer vždy nízky a je to normálne: Linux zapĺňa nevyužitú pamäť cache súborov (buff/cache), ktorú uvoľní, len čo ju niektorý program potrebuje.ps aux --sort=-rss: procesy zoradené podľa obsadenej pamäte (stĺpec RSS, v kilobajtoch). Tu uvidíte, koľko váži každý worker PHP alebo Node.js.vmstat 5 5: päť meraní v päťsekundových intervaloch. Nenulové hodnoty v stĺpcoch si a so, meranie za meraním, signalizujú server, ktorý presúva pamäť do swapu: chýba mu pamäť.Merajte v najvyťaženejšej chvíli dňa a počas príležitostných úloh: kompilácie, zálohy, importu. Rozhoduje špička.
Server, ktorému dochádza pamäť, nespomaľuje postupne. Keď už nie je čo uvoľniť, jadro Linuxu spustí OOM killer (out of memory): vyberie proces, spravidla ten, ktorý zaberá najviac pamäte, a okamžite ho zastaví. Na aplikačnom serveri je to často databáza.
Príznaky: občasné chyby 502 alebo 503, služba, ktorá sa reštartuje bez zjavného dôvodu, kompilácia, ktorá sa preruší hlásením Killed. Potvrdia to logy:
journalctl -k | grep -i "out of memory"
systemctl status nazov-sluzby
Vo výstupe systemctl status označuje hlásenie Failed with result 'oom-kill' službu zastavenú pre nedostatok pamäte.
Swap, ak ho server má, túto chvíľu oddiali tým, že najmenej používanú pamäť presunie na disk. Slúži ako záchranná sieť, nie ako kapacita: server, ktorý sa o swap opiera trvalo, odpovedá niekoľkonásobne pomalšie, aj na SSD NVMe.
Riešenia, od najjednoduchšieho po najtrvalejšie: znížiť počet procesov aplikácie (pm.max_children, workery Gunicorn), kompilovať mimo servera, obmedziť pamäť databázy a potom prejsť na vyššiu veľkosť.
Pamäť nie je jediný zdroj: procesor rozhoduje pri výpočtoch (kompilácia, spracovanie obrázkov, beh modelu AI), disk pri databáze a súboroch. Pri webovej aplikácii však veľkosť takmer vždy určuje práve pamäť.
VPS Pro sa ponúka v šiestich veľkostiach, na procesoroch Intel Xeon, pamäti ECC a zrkadlených SSD NVMe, a na vyššiu veľkosť prejde kedykoľvek, bez reinštalácie. Komplexná podpora je v cene: opíšte nám, čo bude váš server prevádzkovať, a odporučíme vám veľkosť; potom pri každej otázke stanovíme diagnózu a povieme vám, čo urobiť, od systému až po kód vašej aplikácie.
Statický web, proxy alebo malý skript bežia v 1 až 2 GB. Len čo server zdieľa databáza a aplikácia (PHP, Node.js, Python), počítajte s 2 GB pre web na WordPresse a so 4 GB pre aplikáciu na mieru s PostgreSQL.
2 GB pre web s MariaDB a cache stránok, 4 GB pre e-shop na WooCommerce alebo viacero webov. Prvým nastavením je počet procesov PHP-FPM: každý zaberá 40 až 80 MB.
Nie. Swap zabráni náhlemu zastaveniu, keď je pamäť plná, ale server, ktorý ho využíva trvalo, odpovedá niekoľkonásobne pomalšie, aj na SSD NVMe. Je to záchranná sieť; veľkosť sa vyberá podľa pamäte.
Pretože Linux používa nevyužitú pamäť ako cache súborov. Táto cache sa uvoľní, len čo program potrebuje pamäť. Čítať treba stĺpec available, ktorý udáva skutočne dostupnú pamäť.
Počítajte s 1 až 2 GB len na samotnú kompiláciu, navyše k tomu, čo už na serveri beží. Kompilácia na vašom počítači alebo v CI a nahranie len výsledku sa tejto špičke vyhne.
Simafri
Porozprávajme sa o vašom zámere
Povedzte nám v pár slovách, čo potrebujete: rýchlo sa vám ozveme.
Ďakujeme! Vaša žiadosť bola odoslaná. Čoskoro sa vám ozveme.
Máte radšej e-mail? Napíšte nám na support@simafri.com.