Gå til innhold

Fylle opp minne på webserver.


Gavekort

Anbefalte innlegg

Videoannonse
Annonse

Slik Apache normalt er satt opp blir minnebruk kopiert for hver ny tråd. Den bruker med andre ord et par megabyte idle, men så et et par titalls megabyte for hver aktivt request som blir behandlet. Har du i gjennomsnitt ti request i sekundet og en basebruk på 30 MB (det er avhengig av plugins installert) blir det 300 MB. Minnet blir frigitt med en gang requestet er ferdigbehandlet.

 

Når det gjelder MysQL er det avhengig av hvilken motor du bruker, de mest vanlige er InnoDB og MyISAM. Går du til mysqlperformanceblog.com skal du finne lister av variabler du må sette for å øke minnebruken. Bruker du MyISAM er f.eks key_buffer_size en viktig variabel som default står på 8M som lett kan settes opp til en gigabyte. Men bruker du InnoDB hjelper det lite. Det er et par fire-fem-seks variabler du må sette for å øke minnebruk i MySQL og jeg tror ikke de du nevner er noen av de.

Lenke til kommentar

Jeg tror ikke jeg kjenner til noen serverprogramvare som reserverer minne. Det blir allokert og frigitt etter behov.

 

Gå gjennom denne:

http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/

 

Når det er nevnt er Apaches største problem at den bruker _for mye_ minne (etter et par hundre request i sekundet begynner systemet å swappe og tryner totalt) som gjør at mange bruker Lighttpd og Nginx for systemer med mange request i sekundet eller mange langvarige spørringer. Og det er også vanskelig å få MySQL til å bruke mye minnne med mindre du også har mye data og indexes i databasen.

En server jeg akkurat sjekket med henholdsvis 1 og 1.5 millioner Apache-hits og SQL-queries i døgnet har den minnebruk på 500 og 400 MB på et system med 8GB.

 

EDIT: Jeg ser usikker, men jeg tror jeg vet om én server som preallokerer, Squid. Og det er grunnen til at for ren caching er Varnish mye raskere, siden den overlater det til Linux-kernelen som er skrevet av folk som virkelig vet hva de driver med.

Endret av JohndoeMAKT
Lenke til kommentar

Er det statiske filer vil automatisk Linux-kernelen sørge for at det kommer fra RAM. Det samme gjelder databasen om den er liten nok. Er det dynamiske filer bør du sørge for at applikasjonen og applikasjonsrammeverket cacher data. Bruker du f.eks PHP er APC flott. Når det gjelder databasen er det bare å gå gjennom lenken i posten min over, så vil det gå av seg selv for det meste.

Lenke til kommentar

Jeg tror ikke jeg kjenner til noen serverprogramvare som reserverer minne. Det blir allokert og frigitt etter behov.

 

Gå gjennom denne:

http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/

 

Når det er nevnt er Apaches største problem at den bruker _for mye_ minne (etter et par hundre request i sekundet begynner systemet å swappe og tryner totalt) som gjør at mange bruker Lighttpd og Nginx for systemer med mange request i sekundet eller mange langvarige spørringer. Og det er også vanskelig å få MySQL til å bruke mye minnne med mindre du også har mye data og indexes i databasen.

En server jeg akkurat sjekket med henholdsvis 1 og 1.5 millioner Apache-hits og SQL-queries i døgnet har den minnebruk på 500 og 400 MB på et system med 8GB.

 

EDIT: Jeg ser usikker, men jeg tror jeg vet om én server som preallokerer, Squid. Og det er grunnen til at for ren caching er Varnish mye raskere, siden den overlater det til Linux-kernelen som er skrevet av folk som virkelig vet hva de driver med.

 

Hvis mysql bruker så lite, hva brukes resten av minnet til på den serveren? Eller, hvorfor har serveren 8 GB. Jeg forsøker ikke å kritisere, men bare nysgjerrig på om de oppsettene jeg bruker selv er fornuftige. På en server jeg har bruker MySQL omtrent 1000 MB, med query_cache_size på ca 468MB og dette er med langt mindre trafikk, men veldig stort sprik i hva som hentes fra basen.

Endret av OJodd
Lenke til kommentar

Serveren bruker omtrent 2GB av 8GB. Apache og MySQL bruker som sagt omtrent 1GB samlet, Varnish og Memcached bruker et par hundre megabyte og misc. stuff og ting i operativsystemet resten.

 

Serveren har 8GB fordi det er en fysisk maskin satt opp to år siden som serverer tjenester årlig nedetid helst skal måles i sekunder. Det koster sikkert like mye å kjøpe ny server enn å oppgradere RAM mtp. hvor stor operasjon det er. Hadde dette vært en virtuell maskin hadde den nok hatt minnestørrelse mer mot faktisk bruk.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...