Gavekort Skrevet 14. januar 2012 Del Skrevet 14. januar 2012 (endret) Hei! Enkelt og greit spørsmål! Hvordan kan jeg fylle opp minnet mitt med Apache og MySQL på min Linux-server? Har allerede økt read_buffer og table_cache på MySQL. Endret 14. januar 2012 av Gavekort Lenke til kommentar
JohndoeMAKT Skrevet 14. januar 2012 Del Skrevet 14. januar 2012 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
Gavekort Skrevet 14. januar 2012 Forfatter Del Skrevet 14. januar 2012 (endret) Takk takk! Vil MySQL fylles gradvis, eller reserverer den minnet? Det er MyISAM jeg bruker, og jeg satte key_buffer_size til 1000000000 (1G) Endret 14. januar 2012 av Gavekort Lenke til kommentar
JohndoeMAKT Skrevet 14. januar 2012 Del Skrevet 14. januar 2012 (endret) 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 14. januar 2012 av JohndoeMAKT Lenke til kommentar
Gavekort Skrevet 14. januar 2012 Forfatter Del Skrevet 14. januar 2012 Ok! Jeg får ikke mer enn knappe 150 besøkende til dagen, så da er ikke det noe problem. Jeg håpet bare at jeg kunne aktivere noe cache, slik at nettsiden og databasen blir hentet fra minne istedet for disken. Lenke til kommentar
JohndoeMAKT Skrevet 14. januar 2012 Del Skrevet 14. januar 2012 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
OJodd Skrevet 14. januar 2012 Del Skrevet 14. januar 2012 (endret) 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 14. januar 2012 av OJodd Lenke til kommentar
JohndoeMAKT Skrevet 14. januar 2012 Del Skrevet 14. januar 2012 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå