sql >> Database >  >> RDS >> Mysql

MySql-proceslijst gevuld met slaapvermeldingen die leiden tot te veel verbindingen?

In principe krijgt u verbindingen in de slaapstand wanneer:

  • een PHP-script maakt verbinding met MySQL
  • sommige zoekopdrachten worden uitgevoerd
  • dan doet het PHP-script dingen die tijd kosten
    • zonder de verbinding met de database te verbreken
  • en ten slotte eindigt het PHP-script
    • wat betekent dat de verbinding met de MySQL-server wordt verbroken

Dus je eindigt over het algemeen met veel processen in een slaapstand als je veel PHP-processen hebt die verbonden blijven, zonder daadwerkelijk iets aan de database-kant te doen.

Een basisidee, dus:zorg ervoor dat je geen PHP-processen hebt die te lang duren -- of dwing ze om de verbinding te verbreken zodra ze geen toegang meer hebben tot de database.


Nog iets dat ik vaak zie als de server wat wordt belast:

  • Er komen steeds meer verzoeken naar Apache
    • wat betekent dat er veel pagina's moeten worden gegenereerd
  • Elk PHP-script, om een ​​pagina te genereren, maakt verbinding met de DB en voert enkele query's uit
  • Deze zoekopdrachten nemen steeds meer tijd in beslag, naarmate de belasting van de DB-server toeneemt
  • Wat betekent dat meer processen zich blijven opstapelen

Een oplossing die kan helpen, is de tijd die uw zoekopdrachten in beslag nemen te verkorten door de langste te optimaliseren.



  1. Hoe gegevens uit de database te halen en ze te bekijken als een ListView

  2. COMMIT OF conn.setAutoCommit(true)

  3. Hoe kom je aan het einde van een dag?

  4. MySQL-spilquery