WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   mysql trådar/processer (https://www.wn.se/forum/showthread.php?t=14322)

Conth 2006-05-29 09:56

Jag har haft frågan uppe förut men har inte löst den.

Jag har en rykande minnesåtgång på servern som kör mysql version 5.0.16 på Linux
I top och ps ser jag massa mysql PROCESSER. Vad jag förstår är det inte trådar jag ser eftersom dom har egen pid!? Dvs jag ser dom i ps utan -m flaggan.

I top står det att varje mysql process tar c:a 10% av minnet. Jag har alltid trott att det är trådar jag ser dvs att detta är den totala minnesåtgången för mysql MEN jag har skruvat ner minnesparametrarna i my.cnf lägre och lägre och ändå swappar servern. Det enda som körs på den är LAMP.
Något är fel - kan det vara så illa att mysql verkligen kör varje "tråd" som en egen process !? Tycker att jag borde ha haft ännu större minnesproblem då - därför har jag antagit att detta inte var fallet - men nu börjar jag bli osäker....
150 processer som tar 10% var av minnet enligt top - det blir rätt många procent totalt... ;-)

Någon som kan hjälpa mig att bringa klarhet!? Kan man köra mysqld "forkande" isf trådad??

kullervo 2006-05-29 11:09

Det du ser i ps, top etc. är processer och inte enskilda trådar. Nästan allt minne som varje mysqld-processer använder är samma som alla andra mysqld-processer använder (det vore helt orimligt om varje process skulle hålla en egen kopia av databasen i minnet). Exakt hur mycket minne som alla mysqld-processer tar upp tillsammans är apsvårt att se (googla lite på ämnet "memory usage" för att förstå problemen med hur ett OS ska mäta det). Räkna med att den totala minnesanvändningen för mysqld är samma som för en enskild mysqld-process. Varje mysqld-process drar ju lite eget minne också vilket börjar spela roll om du har hundratals igång samtidigt.

Lite OT:
Du kan inte länka binärer 100% statiskt i linux så även om du dragit ner de förkompilerade binärerna så länkar de mot bland annat glibc osv vilket också räknas som minnesanvändning i linux trots att du kanske har 500 andra processer igång i datorn som delar på exakt samma minne.

Conth 2006-05-29 11:14

OK, men är detta något som är ändrat till version 5? Vi har en gammal version på en annan server där kör mysqld som EN process med x antal trådar. Dvs en process i ps men många trådar om man kör ps -m.

Du säger att det är normalt att mysql version 5 kör med en PROCESS för varje "tråd" - och att detta inte ska leda till högre minnesutnyttjande - fattar jag dig rätt?! I så fall är mitt minnesproblem på något annat ställe...

*EDIT stavfel

kullervo 2006-05-29 13:16

Visste inte att man kunde se antalet trådar en process kör med ps. Om du kör en glibc med NPTL borde mysqld endast få en rad i ps. Jag är inte så hemma på hur NPTL fungerar (och inte någon annan trådmodell heller för den delen) så jag kan inte utala mig så mycket om det. På datorn jag sitter på just nu kör jag endast med NPTL och då får mysqld bara en rad i ps. Apache däremot får en rad för varje process. Jag antar att det har med att jag kör prefork som MPM.

Jag har bara erfarenhet av mysql 4.

Conth 2006-05-29 13:30

Hmm, Jag vet inget i detalj om hur trådning i sig hanteras i mysql. Jag vet inte ens vad NPTL betyder...

Någon som kör mysql 5 som bara kan berätta hur det ser ut hos er - eller någon som vet mer om detta??

Jag tycker det känns konstigt att det är 150 mysqld processer uppe och kör... Hur delar dom på minne om det är olika processer??
Det finns inget shared memomry segment allokerat vad jag kan se (med ipcs)

grazzy 2006-05-29 15:50

Jag har sett samma beteende som du ser nu Conth, det är lite olika hit och dit och ärligt talat så har jag inte orkat bemöda mig om att verifiera det.

kullervo har dock rätt när han säger att du inte kan lita på minnesanvändningen som anges i ps (med eller utan en tråd för varje anslutning) eftersom alla bibliotek som används av många processer delas i minnet. Den enklaste lösningen (som jag ser det) är att kolla om du har ledigt ram kvar.. om inte - köp mer :D

Conth 2006-05-29 23:54

Jag har redan köpt mer och ändå har jag konfigurerat mysql väldigt snålt. Har 3GB och drar runt 300 samtidiga användare (inloggade inom 5 minutersperiod). Trots detta swappar servern och har väldigt hög load. Känns som jag missar något...

kullervo 2006-05-31 20:05

Citat:

Originally posted by Conth@May 29 2006, 22:54
Jag har redan köpt mer och ändå har jag konfigurerat mysql väldigt snålt. Har 3GB och drar runt 300 samtidiga användare (inloggade inom 5 minutersperiod). Trots detta swappar servern och har väldigt hög load. Känns som jag missar något...
Det är garanterat inte MySQL som drar mycket minne då. 10% av 3GiB+swap är inte mycket. Hur många httpd-processer kör du samtidigt? Vilken ver? Har du bantat Apache på onödiga moduler etc?

Conth 2006-06-01 12:30

Tack för tipset - ska undersöka Apache lite mer.
Har inte optimerat det och det är en gammal version (Server version: Apache/1.3.34 )

Typiskt går det kanske 200 httpd processer i hög last.

Hade varit kul om någon visste mer om frågan angående mysql dock. Verkar väldigt hemligt. Jag lyckas inte hitta något om detta!?
Har dom ändrar från EN trådad process till forkade processer ?!? eller är förklaringen en annan till att det visas som processer (inte trådar) i top och ps fr.o.m version 5!?

Roos 2006-06-03 02:28

Intressant diskussion!
Har själv sett samma sak med mysql från top och ps men inte undersökt det närmare då totala minnesanvändningen aldrig varit något problem.


Alla tider är GMT +2. Klockan är nu 13:00.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson