Kolik je potřeba operační paměti pro virtuální server?

Odhadnout kolik paměti je potřeba pro provoz vlastního VPS je opravdu velmi náročné. Přitom ceny VPS tarifů se odvíjejí zejména podle garantované RAM, a tak je tento odhad dost zásadní. Abych si dokázal na tuto otázku sám sobě odpovědět, pokusil jsem se nasimulovat si VPS u sebe doma.

Virtuální server jsem postavil na distribuci Debian (Lenny). Pro virtualizaci jsem použil VirtualBox. Abych mohl jednoduše připojit síťovku hosta do rozhraní hostitele, nepoužil jsem VirtualBox OSE (2.0.4), ale VirtualBox od Sunu (2.1.4), kde je to mnohem jednodušší. Serveru jsem nejprve poskytl 256MB RAM.

Nainstalován byl Apache(WWW), Bind(DNS), ProFTPd(jako standalone server), Exim4(MTA), MySQL, PHP jako modul Apache, PostgreSQL, SSHd a pár síťových drobností. Vše v nejnovějších stabilních verzích.

Systém nastartoval s necelými 90MB, ale po pár zacvičeních s Apachem si ukousl celých 100MB.

První sada testů - 256MB RAM

Křest ohněm - Magento

Nějáké lehké cvičení nás ale samozřejmě nezajímá, potřebujeme to serveru pořádně osolit, a tak jsem stáhl Magento E-shop. Magento je neuvěřitelný moloch postavený nad jiným molochem (Zend Framework). Ve výsledku si pak shop při zobrazení úvodní stránky načte 208 skriptů a spotřebuje 5MB RAM (memory_get_peak_usage). Po instalaci Magenta se ručička spotřebované paměti zastavila na hodnotě 245MB, což už moc příznivé není. Většinu paměti si držel Apache a MySQL. Po restartu Apache paměť klesla na 173MB. Zbytek (cca. 73MB) si drželo MySQL. MySQL si po vytvoření tabulek Magenta tuto paměť drželo už nastálo, restart ho nijak neodlehčil.

Následně jsem zkusil plnou zátěž serveru, tedy nástrojem Apache Bench jsem vytvořil 10 dotazovacích vláken, která celkově provedla co možná nejrychleji tisíc dotazů na úvodní stránku Magenta. Po deseti sekundách došla operační paměť a začalo se swapovat.

Nette

Jako ukázku Nette jsem spustil Akrabat forms. Při plné zátěži se paměť tentokrát zastavila na 175MB a více už nerostla.

Nors4

Radakční systém NORS4 se při plné zátěži také choval rozumně. Použitá paměť se zastavila u 110MB.

Úprava fotek

Dalším paměťovým testem byla práce s fotkami. V PHP skriptu jsem načetl 1,5MB velkou fotku, ořízl ji a nakonec zmenšil na 100x100px náhled. S pětinásobným spuštěním skriptu si systém během několika sekund poradil, jakmile ale byl skript spuštěn 10x, byla RAM okamžitě zaplněna a následovalo téměř minutové zoufalé swapování.

Závěr první série

Z testů celkem zřejmé vyplývá, že pokud nechcete hostovat pouze jeden paměťově nenáročný web, je 256MB RAM opravdu drasticky málo. Pro další sérii testů zkusíme tedy dvojnásobek.

Druhá sada testů - 512MB RAM

U této velikosti paměti lze očekávat, že VPS nebude určen pouze jedné stránce. Proto jsem změnil běh PHP z modulu na FastCGI, u kterého jde lépe pracovat s bezpečností, výkonem i stabilitou. S 512MB paměti systém zvádl 1 dotaz za sekundu na úvodní stránku Magenta. Využití paměti sice dosáhlo téměř vrcholu a bylo použito 200MB swapu, ale systém běžel reletivně hladce a stabilně. Nette i Nors běžely zcela bez obtíží i při zátěži několika dotazů za sekundu. Podle těchto výsledků bych tedy 512MB doporučil pouze pro jeden paměťově náročný web s návštěvností do 10 000 shlédnutí za den nebo pro několik paměťově málo náročných webů.

Třetí sada testů - 1024MB RAM

Při plné zátěži úvodní stránky Magenta se paměť vyšplhala na 670MB a dále už byla rychlost odezvy závislá pouze na procesoru. Swap nebyl použit. Server přitom zvládl vyřídit 1,3 požadavku za sekundu, což není v případě Magenta špatné. Pokud budeme hostovat více náročných webů a nebudeme mít nijak závratně velikou návštěvnost, bude 1024MB správná volba.

Odvození velikosti RAM ze sdíleného hostingu

Na serveru Hostmonsteru, kde mám účet, je 30 uživatelů a celkem používáme cca. 14 GB paměti. To tedy vychází na necelých 500MB na jednoho uživatele. U některých typů virtualizace se do Vaší využité RAM ale počítá i linuxový kernel. Proto je potřeba počítat s tím, že pro VPS potřebujete minimálně o 100MB operační paměti více než pro sdílený hosting. Mimoto sdílený hosting umožňuje lépe přelévat nevyužitou paměť. Proto bych raději připočetl dalších 100MB jako zálohu, čímž se dostáváme na celkových 700MB.

Co na to hostingy?

Většina hostingů nenabízí za rozumný peníz (do 500/měs.) ani 500MB paměti. Jediná světlá vyjímka je ASPone, který nabízí za 400/měs. dokonce 2GB paměti.

evaluation

comments

[1] Ciman
2009-03-26 10:48:27

Ahoj,
tohle teď taky docela dost řeším..ale zátěž mám trochu v jiných relacích...na serveru encoduju video do .flv...mám dedikovaný server od kluků, co to provozovali předtím a na 2GB RAM při prohlížení webu poznám, že to encoduje. Dost přemýšlím nad vlastním ukrutně drahým strojem do nějakýho datacenter. Tak jen pokračuj v téhle sérii :) rád si přečtu co a jak.

[2] koubel
2009-04-05 14:00:49

Na jeden normální webík se pár stovkami návštěv denně a na různé experimenty s technologiemi je VPS s 256M stačí, dokonce i na náročnější weby postavené nad různými CMS jako Drupal apod. to stačí. Dost pomůže poladit nastavení web serveru, db, v diskusních fórech o VPS je toho dost.

S těmi garantovanými 2G za 400Kč se mi to jeví jako nesmysl, to určitě nebude garantových 2G, podle toho co tam mají je to Virtuozzo takže to bude nějaké to "burstable memory", navíc Aspone je Windows hoster, takže objednat si u něj cokoli co není Win like technologie je docela risk.

replied by [3] Dundee
[3] Dundee
2009-04-05 14:18:32

#2 koubel: Přesně tak, garantovaných je jen 384MB. Lépe je to rozepsané v třetím článku série, kdy jsem ty VPS opravdu vyzkoušel.

[4] Martin
2011-01-24 16:15:39

Staré zlaté časy, kdy jsem měl na serveru 64MB RAM (nebyl to VPS, ale nějaké PII).

comments closed