Kiek RAM reikia VPS serveriui: taisyklė pagal kiekvieną paskirtį

Atmintis dažniausiai ir lemia serverio dydį: jos pritrūksta pirmiausia, o kai pritrūksta, serveris ne sulėtėja, o sustabdo paslaugas. Šis gidas pateikia skaičiavimo taisyklę, kiek suvartoja kiekviena programos dalis, tipinius profilius ir būdą išmatuoti jau veikiantį serverį.

Paskelbta 2026 m. spalio 15 d. Autorius: Skaitymo trukmė: 9 min.

Visi gidai

Svarbiausia

  1. Sudėkite viską, kas nuolat laikoma atmintyje: sistemą, žiniatinklio serverį, kiekvieną programos procesą, duomenų bazę, podėlį.
  2. Skaičiuokite pagal piką, o ne pagal vidurkį: kompiliavimas, atsarginė kopija ar suplanuota užduotis kelioms minutėms gali padvigubinti suvartojimą.
  3. Pridėkite 25 % atsargą. Laisva likusi atmintis tampa disko podėliu ir pagreitina duomenų bazę.
  4. Jau veikiančiame serveryje žiūrėkite komandos free -h stulpelį available, o ne stulpelį free.
  5. Kai atminties pritrūksta, Linux sustabdo procesą, dažnai didžiausią: duomenų bazę. Paslauga, kuri pati persikrauna, yra pirmasis ženklas, kurį verta stebėti.
  6. Rinkitės dydį, kurį galima padidinti be pakartotinio diegimo: gamybinėje aplinkoje veikiančios programos poreikiai auga kartu su jos duomenimis.

Taisyklė: sudėti tai, kas lieka atmintyje

Serveris nevartoja atminties „apskritai“: kiekviena veikianti programa pasilaiko savo dalį tol, kol veikia. Todėl skaičiavimas prasideda nuo nuolat veikiančių procesų sąrašo, prie kurio pridedamas pikas ir atsarga:

Reikiama atmintis = (sistema + nuolatinės paslaugos + epizodinių užduočių pikas) × 1,25

Kiek suvartoja kiekviena dalis

Toliau pateikti dydžiai galioja įprasto dydžio programai, išmatuotai gamybinėje aplinkoje. Tai atspirties taškas; jūsų pačių programos matavimas, aprašytas žemiau, visada turi paskutinį žodį.

DalisTipinė atmintisKas lemia svyravimus
Nginx, Caddy (žiniatinklio serveris, tarpinis serveris)nuo 10 iki 50 MBBeveik pastovi: jungčių skaičius mažai ką keičia.
PHP-FPM (WordPress, Laravel, Symfony)nuo 40 iki 80 MB vienam procesuiProcesų skaičius, ribojamas pm.max_children: 10 procesų, nuo 400 iki 800 MB.
Node.js (API, Next.js, NestJS)nuo 60 iki 300 MB vienam procesuiProcesų skaičius (cluster režimas, PM2) ir krūvos dydis, ribojamas --max-old-space-size.
Python (Django, FastAPI, Flask)nuo 80 iki 200 MB vienam procesuiGunicorn ar Uvicorn darbinių procesų (workers) skaičius ir įkeltos bibliotekos: pandas ar mašininio mokymosi modelis prideda šimtus MB.
Java (Spring Boot)nuo 300 MB iki 1 GB vienai programaiDidžiausias krūvos dydis: pagal numatytuosius nustatymus JVM pasiima ketvirtadalį atminties, kurią mato.
Go, Rustnuo 10 iki 100 MBDuomenys, kuriuos programa pati laiko atmintyje.
PostgreSQL25 % atminties shared_buffers, plius keli MB kiekvienai jungčiaiDažnai skaitomų duomenų apimtis, jungčių skaičius, work_mem.
MySQL, MariaDBinnodb_buffer_pool_size, pagal numatytuosius nustatymus 128 MBServeryje, skirtame tik duomenų bazei, šis buferis dažnai užima iki 80 % atminties.
RedisDuomenų dydis, plius jo struktūrosĮrašant į diską, pakeisti puslapiai dubliuojami: blogiausiu atveju iki dvigubo dydžio.
Elasticsearch, OpenSearchmažiausiai 2 GB krūvaiKrūva neviršija pusės atminties: likusi dalis tenka failų podėliui.

JavaScript programose dažnai pasikartoja vienas pikas: kompiliavimas. npm run build Next.js, Nuxt ar Angular projekte vien sau dažnai pareikalauja nuo 1 iki 2 GB, kelioms minutėms, be to, kas jau veikia. Kompiliuoti serveryje reiškia parinkti dydį šiam pikui; kompiliuoti savo kompiuteryje ar nuolatinės integracijos (CI) aplinkoje ir į serverį įkelti tik rezultatą reiškia jo išvengti.

Tas pats principas galioja Docker konteineriams: kiekvienas konteineris yra toks pat procesų rinkinys kaip ir kiti, o Docker tarnyba prideda savo suvartojimą. docker stats parodo, kiek užima kiekvienas.

Tipiniai profiliai

Šie profiliai sudeda ankstesnes dalis, įskaitant piką ir atsargą. Jie numato įprasto dydžio programą ir paleidimo laikotarpio srautą; didelė duomenų bazė ar nuolat didelis srautas stumia skaičių aukštyn.

Kas veikia serveryjeReikiama atmintis
Statinė svetainė, tarpinis serveris, nedidelis botas ar suplanuotas scenarijusnuo 1 iki 2 GB
WordPress svetainė su MariaDB ir puslapių podėliu2 GB
WooCommerce parduotuvė arba kelios WordPress svetainės4 GB
Node.js ar Python API su PostgreSQL, pirmieji vartotojai4 GB
Serveryje kompiliuojama Next.js programa, jos API ir PostgreSQL duomenų bazėnuo 6 iki 8 GB
Kelios programos konteineriuose, testavimo ir gamybinė aplinka8 GB
Kelių dešimčių GB duomenų bazė, intensyviai naudojama16 GB ir daugiau
Serveryje vykdomas kalbos modelis su 7 ar 8 milijardais parametrų16 GB

Programa, kuri DI modelį kviečia per API (OpenAI, Anthropic, Mistral), parenkama kaip bet kuri žiniatinklio programa: modelis veikia pas savo kūrėją, o jūsų serveris laukia jo atsakymo. Mastą pakeičia modelio vykdymas pačiame serveryje.

Matuoti veikiantį serverį

Veikiančiame serveryje vertinimą pakeičia matavimas. Trys komandos parodo, kokia yra padėtis:

Terminalas
free -h
ps aux --sort=-rss | head -n 15
vmstat 5 5

Matuokite labiausiai apkrautu dienos metu ir per epizodines užduotis: kompiliavimą, atsarginę kopiją, importą. Svarbus būtent pikas.

Kai atminties pritrūksta

Atminties pritrūkęs serveris nelėtėja palaipsniui. Kai nebelieka ką atlaisvinti, Linux branduolys paleidžia OOM killer (out of memory): jis pasirenka procesą, paprastai daugiausia atminties užimantį, ir akimirksniu jį sustabdo. Programų serveryje tai dažnai būna duomenų bazė.

Simptomai: protarpinės klaidos 502 ar 503, paslauga, kuri be akivaizdžios priežasties persikrauna, kompiliavimas, nutrūkstantis su pranešimu Killed. Žurnalai tai patvirtina:

Terminalas
journalctl -k | grep -i "out of memory"
systemctl status paslaugos-pavadinimas

Komandos systemctl status išvestyje įrašas Failed with result 'oom-kill' reiškia, kad paslauga sustabdyta dėl atminties trūkumo.

Swap, jei serveris jį turi, šią akimirką atitolina, perkeldamas mažiausiai naudojamą atmintį į diską. Jis yra apsauginis tinklas, o ne talpa: serveris, nuolat besiremiantis swap, atsako kelis kartus lėčiau, net ir su NVMe SSD.

Sprendimai, nuo paprasčiausio iki ilgalaikiškiausio: sumažinti programos procesų skaičių (pm.max_children, Gunicorn darbiniai procesai), kompiliuoti ne serveryje, apriboti duomenų bazės atmintį, tada pereiti prie didesnio dydžio.

Pasirinkti dydį ir numatyti ateitį

  1. Išvardykite, kas veiks: žiniatinklio serveris, programa ir jos procesų skaičius, duomenų bazė, podėlis, suplanuotos užduotys.
  2. Sudėkite pagal dalių lentelę, pridėkite sunkiausią piką (dažnai kompiliavimą), tada 25 % atsargą.
  3. Rinkitės dydį, kuris padengia šią sumą. Iš dviejų gretimų dydžių tinka mažesnis, jei pereiti prie didesnio galima be pakartotinio diegimo.
  4. Matuokite paleidę, dienos piko metu, ir vėl kiekviename programos augimo etape.

Atmintis nėra vienintelis išteklius: procesorius svarbus tam, kas skaičiuoja (kompiliavimas, vaizdų apdorojimas, DI modelio vykdymas), diskas svarbus duomenų bazei ir failams. Vis dėlto žiniatinklio programai dydį beveik visada nulemia atmintis.

Tinkamas dydis ir laisvė jį keisti

VPS Pro siūlomas šešių dydžių, su Intel Xeon procesoriais, ECC atmintimi ir veidrodiniais NVMe SSD, ir bet kada pereina prie didesnio dydžio, be pakartotinio diegimo. Visapusiška pagalba įskaičiuota: aprašykite, ką veiks jūsų serveris, ir mes patarsime dydį, o paskui kiekvienu klausimu diagnozuosime ir nurodysime, ką daryti, nuo sistemos iki jūsų programos kodo.

Žiūrėti VPS Pro

Dažni klausimai

Kiek RAM reikia nedideliam VPS?

Statinei svetainei, tarpiniam serveriui ar nedideliam scenarijui pakanka nuo 1 iki 2 GB. Kai serveryje kartu veikia duomenų bazė ir programa (PHP, Node.js, Python), skaičiuokite 2 GB WordPress svetainei ir 4 GB individualiai programai su PostgreSQL.

Kiek RAM reikia WordPress svetainei VPS serveryje?

2 GB svetainei su MariaDB ir puslapių podėliu, 4 GB WooCommerce parduotuvei ar kelioms svetainėms. Pirmasis nustatymas yra PHP-FPM procesų skaičius: kiekvienas procesas užima nuo 40 iki 80 MB.

Ar swap gali pakeisti RAM?

Ne. Swap apsaugo nuo staigaus sustojimo, kai atmintis pilna, tačiau serveris, kuris juo naudojasi nuolat, atsako kelis kartus lėčiau, net ir su NVMe SSD. Tai apsauginis tinklas; dydis renkamas pagal atmintį.

Kodėl free rodo, kad laisvos atminties beveik neliko?

Nes Linux nenaudojamą atmintį naudoja kaip failų podėlį. Šis podėlis atlaisvinamas, vos programai prireikia atminties. Žiūrėti reikia stulpelio available, kuris rodo iš tikrųjų prieinamą atmintį.

Kiek RAM reikia Next.js programai sukompiliuoti?

Vien kompiliavimui skaičiuokite nuo 1 iki 2 GB, be to, kas jau veikia serveryje. Kompiliuojant savo kompiuteryje ar nuolatinės integracijos aplinkoje ir įkeliant tik rezultatą, šio piko išvengiama.

Susisiekite su mumis