[UNIX] Frontend servers maken teveel MySQL TCP Connecties

Pagina: 1
Acties:

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 07-02 09:23
In een cluster van servers, waarbij 3 frontend servers verbonden zijn met een database server, worden naar mijn mening teveel mysql connecties gemaakt.

Na de invoering van een nieuwe versie van onze website is de load op de frontends erg hoog. Dit gaat gekoppeld met een groot aantal TIME_WAIT tcp connecties op de database servers.

Om een vergelijking te geven, op een ander cluster, met een website die ongeveer even druk is, staan 155 mysql sessions op TIME_WAIT. Op dit cluster staan 5555 mysql sessions op TIME_WAIT.

De db server lijkt het helemaal niet druk te hebben, ondanks het hoge aantal openstaande sessions.
Het lijkt er haast op alsof de apache webserver op de frontends vertraging oploopt door het grote aantal openstaande sessies, of andersom, dat de apache processen zoveel tijd vragen dat het aantal openstaande sessions groter wordt (hoewel ze dan toch op established zouden moeten staan?)

Waar al naar gekeken is:
- persistent connecties
- overbodige queries
- te zware queries
- apache error logs (geen echte errors meer)


De load op 3 frontends loopt op tot 100. Samen serveren de servers zo'n 25 miljoen pagina's per dag, waarvan het meerendeel gecached is in html (deze pagina's hebben geen db connectie).

Heeft iemand dit eerder meegemaakt? Alle tips om dit probleem te debuggen zijn welkom.

Ik blijf er iig vrij nuchter onder....


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

[q]• persistent connecties
• overbodige queries
• te zware queries
• apache error logs (geen echte errors meer)
Vooral persistente connecties kunnen een reden zijn dat er veel verbindingen/sessies openstaan. Heb je bijvoorbeeld persistent_connecties al eens uit gezet? Ook kan het voorkomen dat PHP de persistente connectie niet goed weet te hergebruiken heb je daar al eens naar gekeken? Verder zou je in MySQL wellicht in kunnen stellen dat sessies eerder worden afgesloten bij inactiviteit

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 07-02 09:23
Ja, persistent connecties worden uberhaupt niet gebruikt. Ik heb het wel getest door het aan te zetten, dit lostte eigenlijk niets op.

Verder zoek ik het probleem niet in de database server, want deze heeft altijd gewerkt met dezelfde settings, die geoptimaliseerd zijn voor ons cluster. Het lijkt er op dat het probleem veroorzaakt wordt door de frontends.

Ik blijf er iig vrij nuchter onder....


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 03-02 08:37
Kijk eens wat er dan wel veranderd is? Is er wat veranderd betreffende de queries die uitgevoerd worden of zit het totaal ergens anders?

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 07-02 09:23
Tja, de queries zijn natuurlijk veranderd. 95% van de sql queries zijn echter van het banner systeem, dat niet gewijzigd is. Het enige grote verschil is dat de tabellen (niet van het banner systeem) innodb geworden zijn. In principe zou dit sneller moeten zijn voor select queries.

Sowieso zijn alle queries gebenchmarkt en ze zijn optimaal.

Verder zijn er een aantal dingen nieuw waarvan ik niet goed weet wat voor impact ze op de load hebben

- dynamisch gzip van apache met mod_gzip is omgezet naar statische gzip (moet sneller zijn)
- Oude urls worden met mod_rewrite geredirect naar de nieuwe urls
- er zijn meer php include files (maar met het caching mechanisme van php zou dit niet uit moeten maken)
- Er is een zoekfunctie met full_text_search toegevoegd, maar de tabel waarop gezocht wordt is klein en ook is die query niet terug te vinden in de slow-query-log van mysql

Ik blijf er iig vrij nuchter onder....


  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 02-12-2025

daft_dutch

>.< >.< >.< >.<

worden de sql verbindingen in php wel afgesloten?

>.< >.< >.< >.<


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

daft_dutch schreef op donderdag 09 maart 2006 @ 19:12:
worden de sql verbindingen in php wel afgesloten?
Using mysql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution. See also freeing resources
;)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 07-02 09:23
Inderdaad, en daarbij wordt elk script geindigd met een auto_append_file, met daarin:

PHP:
1
2
3
4
<?
mysql_close();
exit();
?>

Ik blijf er iig vrij nuchter onder....


  • Michael
  • Registratie: Maart 2000
  • Laatst online: 20-01 19:22
die auto_append_file is zowiezo dus niet nodig, sterker nog als je getest hebt met persistent connections en daarbij ook die auto append file hebt gebruikt, dan doe je het hele idee van persistent connections teniet.
Pagina: 1