Mälu on ressurss, mis kõige sagedamini määrab serveri suuruse: see saab esimesena otsa ja kui see otsa saab, ei muutu server lihtsalt aeglaseks, vaid peatab teenuseid. See juhend annab arvutusreegli, näitab, mida rakenduse iga osa tarbib, toob tüüpilised profiilid ja selgitab, kuidas juba töötavat serverit mõõta.
free -h veergu available, mitte veergu free.Server ei tarbi mälu «üldiselt»: iga töötav programm hoiab endale osa sellest, seni kuni ta töötab. Arvutus algab seega pidevalt töötavate protsesside loendist, seejärel lisanduvad tipp ja varu:
Vajalik mälu = (süsteem + püsivad teenused + ajutiste toimingute tipp) × 1,25
Allolevad suurusjärgud kehtivad tavalise suurusega rakenduse kohta, mõõdetuna tootmises. Need annavad lähtepunkti; viimane sõna jääb alati teie enda rakenduse mõõtmisele, mida kirjeldatakse allpool.
| Komponent | Tüüpiline mälu | Mis seda muudab |
|---|---|---|
| Nginx, Caddy (veebiserver, puhverserver) | 10 kuni 50 MB | Peaaegu püsiv: ühenduste arv mõjutab vähe. |
| PHP-FPM (WordPress, Laravel, Symfony) | 40 kuni 80 MB protsessi kohta | Protsesside arv, mille ülempiiri seab pm.max_children: 10 protsessi teeb 400 kuni 800 MB. |
| Node.js (API, Next.js, NestJS) | 60 kuni 300 MB protsessi kohta | Protsesside arv (klastrirežiim, PM2) ja kuhja suurus, mida piirab --max-old-space-size. |
| Python (Django, FastAPI, Flask) | 80 kuni 200 MB protsessi kohta | Gunicorni või Uvicorni workerite arv ja laaditud teegid: pandas või masinõppemudel lisavad sadu megabaite. |
| Java (Spring Boot) | 300 MB kuni 1 GB rakenduse kohta | Kuhja maksimaalne suurus: vaikimisi võtab JVM endale veerandi mälust, mida ta näeb. |
| Go, Rust | 10 kuni 100 MB | Andmed, mida rakendus ise mälus hoiab. |
| PostgreSQL | 25 % mälust shared_buffers jaoks, pluss mõni MB ühenduse kohta | Sageli loetavate andmete maht, ühenduste arv, work_mem. |
| MySQL, MariaDB | innodb_buffer_pool_size, vaikimisi 128 MB | Ainult andmebaasile pühendatud serveris võtab see puhver tavaliselt kuni 80 % mälust. |
| Redis | Andmete maht, pluss nende struktuurid | Kettale salvestamise ajal dubleeritakse muudetud lehed: halvimal juhul kuni kahekordne maht. |
| Elasticsearch, OpenSearch | Vähemalt 2 GB kuhja jaoks | Kuhi jääb alla poole mälust: ülejäänu teenib failide vahemälu. |
JavaScripti rakenduste puhul kordub üks tipp ikka ja jälle: kompileerimine. npm run build nõuab Next.js-, Nuxt- või Angular-projektis tihti üksi 1 kuni 2 GB mõneks minutiks, lisaks kõigele, mis juba töötab. Serveris kompileerimine tähendab serveri mõõtmist selle tipu järgi; kompileerimine oma arvutis või pidevas integratsioonis (CI) ja ainult tulemuse üleslaadimine väldib seda.
Sama arutluskäik kehtib Dockeri konteinerite kohta: iga konteiner on tavaliste protsesside kogum ja Dockeri deemon lisab oma tarbimise. docker stats näitab, kui palju igaüks võtab.
Need profiilid liidavad eelmised komponendid kokku, tipp ja varu kaasa arvatud. Need eeldavad tavalise suurusega rakendust ja käivitusaja liiklust; mahukas andmebaas või püsivalt suur liiklus nihutavad vajadust ülespoole.
| Mis serveris töötab | Planeeritav mälu |
|---|---|
| Staatiline sait, puhverserver, väike bot või ajastatud skript | 1 kuni 2 GB |
| Üks WordPressi sait MariaDB ja lehevahemäluga | 2 GB |
| WooCommerce'i e-pood või mitu WordPressi saiti | 4 GB |
| Node.js- või Pythoni API PostgreSQL-iga, esimesed kasutajad | 4 GB |
| Serveris kompileeritav Next.js-rakendus koos oma API ja PostgreSQL-i andmebaasiga | 6 kuni 8 GB |
| Mitu konteinerites töötavat rakendust, testkeskkond ja tootmine | 8 GB |
| Mitmekümne gigabaidine andmebaas, mida loetakse intensiivselt | 16 GB ja rohkem |
| Serveris käitatav 7 kuni 8 miljardi parameetriga keelemudel | 16 GB |
Rakendus, mis kutsub tehisintellekti mudelit API kaudu (OpenAI, Anthropic, Mistral), mõõdetakse nagu iga teine veebirakendus: mudel töötab oma väljaandja juures ja teie server ootab vastust. Mõõtkava muudab mudeli käitamine serveris endas.
Töötavas serveris asendab mõõtmine hinnangu. Kolm käsku näitavad, kus te olete:
free -h
ps aux --sort=-rss | head -n 15
vmstat 5 5
free -h: lugege veergu available, see on mälu, mis on uute programmide käivitamiseks tegelikult saadaval. Veerg free on peaaegu alati madal ja see on normaalne: Linux täidab kasutamata mälu failide vahemäluga (buff/cache) ja annab selle tagasi niipea, kui mõni programm seda vajab.ps aux --sort=-rss: protsessid hõivatud mälu järgi järjestatuna (veerg RSS, kilobaitides). Siit näete, kui palju iga PHP või Node.js worker kaalub.vmstat 5 5: viis näitu viiesekundilise vahega. Kui veergudes si ja so on näidust näitu nullist erinevad väärtused, vahetab server andmeid swapiga: tal napib mälu.Mõõtke päeva kõige koormatumal ajal ja ajutiste toimingute ajal: kompileerimine, varundus, import. Loeb tipp.
Server, mille mälu saab otsa, ei aeglustu järk-järgult. Kui vabastada pole enam midagi, käivitab Linuxi tuum OOM killeri (out of memory): see valib protsessi, tavaliselt selle, mis hõivab kõige rohkem mälu, ja peatab selle kohe. Rakendusserveris on see sageli andmebaas.
Sümptomid: aeg-ajalt vead 502 või 503, teenus, mis taaskäivitub ilma nähtava põhjuseta, kompileerimine, mis katkeb teatega Killed. Logid kinnitavad seda:
journalctl -k | grep -i "out of memory"
systemctl status teenuse-nimi
Käsu systemctl status väljundis tähistab märge Failed with result 'oom-kill' teenust, mis peatati mälupuuduse tõttu.
Swap (saalemälu), kui serveril see on, lükkab selle hetke edasi, viies kõige vähem kasutatud mälu kettale. See on turvavõrk, mitte lisamaht: server, mis toetub pidevalt swapile, vastab mitu korda aeglasemalt, isegi NVMe SSD-l.
Lahendused, lihtsaimast kõige püsivamani: vähendage rakenduse protsesside arvu (pm.max_children, Gunicorni workerid), kompileerige väljaspool serverit, piirake andmebaasi mälu ja minge seejärel suuremale suurusele.
Mälu kõrval loevad ka teised ressursid: protsessor kõige puhul, mis arvutab (kompileerimine, piltide töötlemine, AI-mudeli käitamine), ketas andmebaasi ja failide puhul. Veebirakenduse suuruse määrab siiski peaaegu alati mälu.
VPS Pro on saadaval kuues suuruses, Intel Xeon protsessoritel, ECC-mälu ja peegeldatud NVMe SSD-dega, ning läheb igal ajal suuremale suurusele ilma uuesti paigaldamata. Terviklik tugi sisaldub: kirjeldage meile, mida teie server käitama hakkab, soovitame teile suuruse ning seejärel diagnoosime iga küsimuse ja ütleme teile, mida teha, süsteemist kuni teie rakenduse koodini.
Staatiline sait, puhverserver või väike skript töötavad 1 kuni 2 GB mäluga. Niipea kui andmebaas ja rakendus (PHP, Node.js, Python) serverit jagavad, arvestage WordPressi saidi jaoks 2 GB ja PostgreSQL-iga eritellimusrakenduse jaoks 4 GB.
2 GB saidile MariaDB ja lehevahemäluga, 4 GB WooCommerce'i e-poele või mitmele saidile. PHP-FPM protsesside arv on esimene seadistus: igaüks neist hõivab 40 kuni 80 MB.
Ei. Swap hoiab ära järsu seiskumise, kui mälu on täis, kuid server, mis seda pidevalt kasutab, vastab mitu korda aeglasemalt, isegi NVMe SSD-l. See on turvavõrk; suurus valitakse mälu järgi.
Sest Linux kasutab kasutamata mälu failide vahemäluna. See vahemälu vabaneb niipea, kui mõni programm mälu vajab. Lugeda tuleb veergu available, mis näitab tegelikult saadaolevat mälu.
Arvestage ainuüksi kompileerimiseks 1 kuni 2 GB, lisaks sellele, mis serveris juba töötab. Kompileerimine oma arvutis või pidevas integratsioonis ja ainult tulemuse üleslaadimine väldib seda tippu.
Simafri
Räägime teie kavatsusest
Öelge meile paari sõnaga, mida vajate: vastame teile kiiresti.
Aitäh! Teie päring on saadetud. Võtame teiega peagi ühendust.
Eelistate e-posti? Kirjutage meile aadressil support@simafri.com.