[PHP/MYSQL] Waarom laat Mysql de /tmp-map vollopen?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Sinds een paar dagen loopt zeker één keer per dag mijn server vast door een raar probleem. Mijn host zegt tegen mij dat een Mysql database de /tmp map vol laat lopen en dat vervolgens de server heel erg traag gaat worden en niks meer doet.

Ik heb nu al mijn php bestandjes met mysql nagelopen echter ik kan helemaal niks vinden dat het probleem is, daarbij komt dat er niks veranderd is aan de bestanden dan toen alles nog vlekkeloos liep.

Mijn vraag aan jullie is nu: is er ergens een manier om op de server te kunnen zien welk scriptje waar voor problemen zorgt?

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Bedoelt de hoster niet dat php de tmp map laat vollopen? Met allemaal sessions?

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Nee, er zouden allemaal Mysql's in die tmp-map staan die "in behandeling" zijn. Letterlijke mail van vanochtend: "Ik zie nog steeds dat je /tmp folder vol loopt door je DB en heb net weer je server moeten herstarten."

[ Voor 52% gewijzigd door Gerwin op 21-06-2005 13:55 ]

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Ik zie het ik zal dat eens bestuderen, maar er is dus geen enkele mogelijkheid dat kan ik kan zien welk bestandje dit veroorzaakt of welke query? Alle query's zouden in principe niet zo'n gigantische tmp map vol moeten kunnen maken. Alle databases op de server zijn met elkaar misschien 50 MB groot, waarvan één tabel van 40 MB die nauwelijks word gebruikt.

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

If Created_tmp_disk_tables is big, you may want to increase the tmp_table_size variable to get the temporary tables memory-based instead of disk based.

http://sunsite.mff.cuni.c...m/doc/en/SHOW_STATUS.html

Heb je nog iets in je error log staan?
Misschien is het handig om de slow query log aan te zetten..

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Als ik SHOW STATUS op de database de database doe die het meest aangeroept word staat er het volgende:

Credted_tmp_disk_tables = 584
Created_tmp_tables = 77315
Created_tmp_files = 816

De server is nu met 12 uur up geweest.

Waar kan ik tmp_table_size vinden? Ik heb SSH toegang tot de server, en er draaid plesk.

Station van Gerwin Prins op Apple Music


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Die variabele zal wel gezet kunnen worden in de my.cnf, denk je niet?

Het gebruik van de tmp-space zal overigens veroorzaakt worden door de diverse plaatsen waar MySQL temporary tables gebruikt. Een ervan is uiteraard "create temporary table ...", maar ook in diverse queries wordt op de achtergrond een temporary table gebruikt. Ook kan ik me voorstellen dat een filesort tmp-space opslokt. MySQL zou de temporary table na gebruik weer weg moeten gooien en met een DB van 50MB kan ik me niet voorstellen dat die temp-space zo hard volloopt. Tenzij je veel bezoeken hebt op je sites en/of de tmp-ruimte nogal krap is.

Om te kijken welke van je queries de tmp-space gebruiken kan je ze nalopen met het explain-commando. De output roept dan iets met tmp table erin. Voorkomen is lastig, maar het toevoegen van indices en of herschrijven van delen van de query kan het voorkomen. Ik weet eerlijk gezegd niet precies wat het allemaal triggered (waarschijnlijk de group by en/of joins met andere tabellen).

Hier op GoT hebben we zo te zien iets van 11% van de "hoeveelheid selects" aan created_tmp_tables, op de frontpage iets van 5%. Als het bij jou meer dan dat soort waarden is moet je zeker eens naar de explain's van je queries kijken en uitvogelen of het beter kan.

Je hebt trouwens maar 584 tmp-tables on disk... lijkt me niet schokkend veel.

[ Voor 20% gewijzigd door ACM op 21-06-2005 22:35 ]


Acties:
  • 0 Henk 'm!

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Ik ben helemaal niet thuis in servergebeuren, maar de host weigerd hier verder tijd aan te besteden. Waar en hoe kan ik de my.cnf aanpassen?

Op onderstaande site ben ik erachter gekomen dat "table_cache" waarschijnlijk veel te laag staat (http://www.databasejourna...mysql/article.php/3367871).

Bij scenario 3 staat dat er:
- Open_Tables = 64
- Opened_tables = 13918

Als toelichting zegt men: "The /table_cache/ is set to 64, and the server has been running for a short time. This time the /table_cache/ is clearly set too low. The /open_tables/ is running at maximum, and the number of /opened_tables/ is already high. If you have the memory, up the table_cache."

De stats van de database die het meest gebruikt word::
- Open_Tables = 64
- Opened_tables = 66510

Kan dit de oorzaak zijn?

Station van Gerwin Prins op Apple Music

Pagina: 1