Minnet är den resurs som oftast avgör storleken på en server: det är det som tar slut först, och när det tar slut saktar servern inte bara in, den stoppar tjänster. Den här guiden ger räkneregeln, vad varje del av en applikation förbrukar, typiska profiler och hur du mäter på en server som redan är i drift.
available i free -h, inte kolumnen free.En server förbrukar inte minne ”i allmänhet”: varje program som körs håller en del av det så länge det körs. Beräkningen utgår därför från listan över processer som alltid finns där, och lägger sedan till toppen och en marginal:
Minne att planera för = (system + ständiga tjänster + topp från tillfälliga jobb) × 1,25
Storleksordningarna nedan gäller för en applikation av vanlig storlek, uppmätta i produktion. De är en utgångspunkt; mätningen på din egen applikation, som beskrivs längre ned, har alltid sista ordet.
| Komponent | Typiskt minne | Vad som får det att variera |
|---|---|---|
| Nginx, Caddy (webbserver, proxy) | 10 till 50 MB | Nästan konstant: antalet anslutningar väger lite. |
| PHP-FPM (WordPress, Laravel, Symfony) | 40 till 80 MB per process | Antalet processer, med taket pm.max_children: 10 processer blir 400 till 800 MB. |
| Node.js (API, Next.js, NestJS) | 60 till 300 MB per process | Antalet processer (klusterläge, PM2) och heapens storlek, som begränsas av --max-old-space-size. |
| Python (Django, FastAPI, Flask) | 80 till 200 MB per process | Antalet Gunicorn- eller Uvicorn-workers, och de bibliotek som laddas: pandas eller en maskininlärningsmodell lägger till hundratals MB. |
| Java (Spring Boot) | 300 MB till 1 GB per applikation | Heapens största tillåtna storlek: som standard tar JVM:en en fjärdedel av det minne den ser. |
| Go, Rust | 10 till 100 MB | Den data som applikationen själv håller i minnet. |
| PostgreSQL | 25 % av minnet för shared_buffers, plus några MB per anslutning | Mängden data som läses ofta, antalet anslutningar, work_mem. |
| MySQL, MariaDB | innodb_buffer_pool_size, 128 MB som standard | På en server som bara kör databasen tar den här bufferten ofta upp till 80 % av minnet. |
| Redis | Datamängden, plus dess datastrukturer | Under en säkerhetskopiering till disk dupliceras de sidor som ändras: upp till det dubbla i värsta fall. |
| Elasticsearch, OpenSearch | Minst 2 GB för heapen | Heapen stannar under halva minnet: resten används som filcache. |
En topp återkommer ofta i JavaScript-applikationer: kompileringen. npm run build i ett Next.js-, Nuxt- eller Angular-projekt kräver ofta 1 till 2 GB på egen hand under några minuter, utöver det som redan körs. Att kompilera på servern innebär att dimensionera för den toppen; att kompilera på din egen dator eller i din CI-miljö och bara lägga upp resultatet undviker den.
Samma resonemang gäller Docker-containrar: varje container är en uppsättning processer som alla andra, och Docker-daemonen lägger till sin egen förbrukning. docker stats visar vad var och en tar.
Profilerna summerar delarna ovan, topp och marginal inräknade. De förutsätter en applikation av vanlig storlek och trafiken vid en lansering; en stor databas eller en jämnt hög trafik flyttar siffran uppåt.
| Det som körs på servern | Minne att planera för |
|---|---|
| Statisk webbplats, proxy, liten bot eller schemalagt skript | 1 till 2 GB |
| En WordPress-webbplats med MariaDB och sidcache | 2 GB |
| En WooCommerce-butik, eller flera WordPress-webbplatser | 4 GB |
| Ett Node.js- eller Python-API med PostgreSQL, de första användarna | 4 GB |
| En Next.js-applikation som kompileras på servern, med sitt API och sin PostgreSQL-databas | 6 till 8 GB |
| Flera applikationer i containrar, testmiljö och produktion | 8 GB |
| En databas på flera tiotals GB som läses intensivt | 16 GB och mer |
| En språkmodell med 7 till 8 miljarder parametrar som körs på servern | 16 GB |
En applikation som anropar en AI-modell via API (OpenAI, Anthropic, Mistral) dimensioneras som vilken webbapplikation som helst: modellen körs hos leverantören, och din server väntar på svaret. Det är när modellen körs på själva servern som skalan ändras.
På en server i drift ersätter mätningen uppskattningen. Tre kommandon visar var du står:
free -h
ps aux --sort=-rss | head -n 15
vmstat 5 5
free -h: läs kolumnen available, det minne som verkligen finns tillgängligt för att starta nya program. Kolumnen free är nästan alltid låg, och det är normalt: Linux fyller oanvänt minne med filcache (buff/cache), som lämnas tillbaka så snart ett program behöver det.ps aux --sort=-rss: processerna sorterade efter använt minne (kolumnen RSS, i kilobyte). Här ser du vad varje PHP- eller Node.js-worker väger.vmstat 5 5: fem mätningar med fem sekunders mellanrum. Värden över noll i kolumnerna si och so, mätning efter mätning, betyder att servern swappar: den har för lite minne.Mät vid dygnets mest belastade tidpunkt, och under de tillfälliga jobben: kompilering, säkerhetskopiering, import. Det är toppen som räknas.
En server som får slut på minne blir inte gradvis långsammare. När det inte finns något kvar att frigöra startar Linuxkärnan OOM killer (out of memory): den väljer en process, oftast den som tar mest minne, och stoppar den direkt. På en applikationsserver är det ofta databasen.
Symtomen: 502- eller 503-fel då och då, en tjänst som startar om utan synbar anledning, en kompilering som avbryts med Killed. Loggarna bekräftar det:
journalctl -k | grep -i "out of memory"
systemctl status din-tjanst
I utdata från systemctl status anger Failed with result 'oom-kill' en tjänst som har stoppats på grund av minnesbrist.
Swap, om servern har det, skjuter upp det ögonblicket genom att flytta det minst använda minnet till disk. Det är ett skyddsnät, inte kapacitet: en server som hela tiden lutar sig mot swap svarar flera gånger långsammare, även på en NVMe-SSD.
Åtgärderna, från den enklaste till den mest hållbara: minska antalet processer i applikationen (pm.max_children, Gunicorn-workers), kompilera utanför servern, begränsa databasens minne och gå sedan upp till en större storlek.
Minnet är inte den enda resursen: processorn spelar roll för det som räknar (kompilering, bildbehandling, körning av en AI-modell), disken för databasen och filerna. För en webbapplikation är det ändå nästan alltid minnet som bestämmer storleken.
VPS Pro finns i sex storlekar, på Intel Xeon-processorer, ECC-minne och speglade NVMe-SSD, och byter till en större storlek när som helst, utan ominstallation. Heltäckande support ingår: beskriv vad din server ska köra, så rekommenderar vi storleken, och sedan ställer vi diagnosen och talar om vad du ska göra i varje fråga, från systemet ända in i koden i din applikation.
En statisk webbplats, en proxy eller ett litet skript klarar sig med 1 till 2 GB. Så snart en databas och en applikation (PHP, Node.js, Python) delar servern räknar du med 2 GB för en WordPress-webbplats och 4 GB för en skräddarsydd applikation med PostgreSQL.
2 GB för en webbplats med MariaDB och sidcache, 4 GB för en WooCommerce-butik eller flera webbplatser. Antalet PHP-FPM-processer är den första inställningen att se över: var och en tar 40 till 80 MB.
Nej. Swap förhindrar ett tvärt stopp när minnet är fullt, men en server som använder det hela tiden svarar flera gånger långsammare, även på en NVMe-SSD. Det är ett skyddsnät; storleken väljs efter minnet.
Därför att Linux använder oanvänt minne som filcache. Den cachen frigörs så snart ett program behöver minne. Kolumnen att läsa är available, som visar det minne som verkligen är tillgängligt.
Räkna med 1 till 2 GB för själva kompileringen, utöver det som redan körs på servern. Att kompilera på din egen dator eller i din CI-miljö och bara lägga upp resultatet undviker den toppen.
Simafri
Låt oss prata om din webbplats
Berätta om ditt projekt med några ord: vi återkommer snabbt.
Tack! Din förfrågan har skickats. Vi återkommer till dig inom kort.
Föredrar du e-post? Skriv till oss på support@simafri.com.