sql >> Database teknologi >  >> RDS >> Mysql

MySql-procesliste fyldt med søvnposter, der fører til for mange forbindelser?

Grundlæggende får du forbindelser i dvaletilstand, når:

  • et PHP-script forbinder til MySQL
  • nogle forespørgsler udføres
  • så laver PHP-scriptet nogle ting, der tager tid
    • uden at afbryde forbindelsen til databasen
  • og til sidst slutter PHP-scriptet
    • hvilket betyder, at den afbryder forbindelsen til MySQL-serveren

Så du ender generelt med mange processer i en dvaletilstand, når du har mange PHP-processer, der forbliver forbundet, uden egentlig at gøre noget på databasesiden.

En grundlæggende idé, så sørg for, at du ikke har PHP-processer, der kører for længe - eller tving dem til at afbryde forbindelsen, så snart de ikke længere behøver at få adgang til databasen.


En anden ting, som jeg ofte ser, når der er en vis belastning på serveren :

  • Der kommer flere og flere anmodninger til Apache
    • hvilket betyder mange sider at generere
  • Hvert PHP-script, for at generere en side, forbinder til databasen og udfører nogle forespørgsler
  • Disse forespørgsler tager mere og mere tid, efterhånden som belastningen på DB-serveren øges
  • Hvilket betyder, at flere processer bliver ved med at stable sig op

En løsning, der kan hjælpe, er at reducere den tid, dine forespørgsler tager – optimering af de længste.



  1. Hvorfor er indlæsning af SQLAlchemy-objekter via ORM 5-8x langsommere end rækker via en rå MySQLdb-markør?

  2. SQL Server ventehændelser -1

  3. Sådan konfigureres postgresql postgresql.conf listen_addresses for flere ip-adresser

  4. Udforskning af SQL Server 2016 Query Store GUI